Засіб аналізу вимог на зміну архітектури програмного забезпечення на прикладі задачі побудова графічного редактора
Програмне забезпечення «MyPaint» являэ собою ростовий графічний редактор. Ростровий графічний редактор — спеціалізована програма, призначена для створення і обробки зображень. Рострові графічні редактори дозволяють користувачеві малювати і редагувати зображення на екрані комп’ютера та скановані зображення або текст з сканера, а також зберігати їх у різних рострових форматах, таких як, наприклад… Читати ще >
Засіб аналізу вимог на зміну архітектури програмного забезпечення на прикладі задачі побудова графічного редактора (реферат, курсова, диплом, контрольна)
КУРСОВОЙ ПРОЕКТ Тема: «Засіб аналізу вимог на зміну архітектури програмного забезпечення на прикладі задачі побудова графічного редактора»
Реферат Пояснювальна записка до дипломного проекту «Створення графічного редактору, та аналіз впливу вимог на зміну архітектури програмного забезпечення»
СТВОРЕННЯ ГРАФІЧНИХ ЗОБРАЖЕНЬ, РЕДАГУВАННЯ ДІЙСНИХ ЗОБРАЖЕНЬ, РОБОТА З СКАНОВАНИМИ ДОКУМЕНТАМИ, КРЕСЛЕННЯМИ, КАРТАМИ, СХЕМАМИ, ТА ІНШИМИ ГРАФІЧНИМИ МАТЕРІАЛАМИ Об'єкт розробки — Графічний редактор MyPaint.
Мета проекту — створення графічного редактору, та на прикладі створеного графічного редактору проаналізувати вплив зміни вимог на зміну архітектури програмного забезпечення.
В процесі роботи, було проаналізовано вплив зміни вимог на зміну архітектури створеного графічного редактора. Результати проаналізованого програмного забезпечення будуть зображені в ході роботи, на прикладі Case Diagram та Class Diagram.
Зміст Вступ Розділ 1. Первинний опис програмного забезпечення графічний редактор
1.1 Визначення вимог до програмного забезпечення
1.2 Термінологія
1.3 Специфікація якості програмного забезпечення
1.4 Функціональна специфікація
1.5 Проектування
1.5.1 Проектування архітектури програми
1.5.2 Проектування структури даних
1.5.3 Проектування графічного інтерфейсу Розділ 2. Продовження життєвого циклу графічного редактора
2.1 Специфікація класів
2.2 Опис алгоритму природною мовою
2.3 Атестація
2.3.1 Тестування
2.3.2 Керівництво адміністратора
2.3.3 Керівництво користувача Розділ 3. Аналіз впливу зміни вимог на зміну архітектури
3.1 Вимоги споживача
3.2 Архітектура програмного забезпечення
3.3 Випадки зміни архітектури програмного забезпечення
3.4 Нові вимоги до програмного забезпечення Висновок Список використаних джерел Додаток А
Вступ Графічний редактор — це програма, призначена для автоматизації процесів побудови на екрані дисплея графічних зображень.
Надає можливості малювання ліній, кривих, розмальовки областей екрану, створення написів різними шрифтами і т.д. Більшість редакторів дозволяють обробляти зображення, отримані за допомогою сканерів, а також виводити картинки в такому вигляді, щоб вони могли бути включені в документ, підготовлений за допомогою текстового редактора.
Деякі редактори дозволяють одержувати зображення тривимірних об'єктів, їх перетинів, розворотів, каркасних моделей і т.п. У даній пояснювальній записці розглядається опис програми «MyPaint».
Програмне забезпечення «MyPaint» являэ собою ростовий графічний редактор. Ростровий графічний редактор — спеціалізована програма, призначена для створення і обробки зображень. Рострові графічні редактори дозволяють користувачеві малювати і редагувати зображення на екрані комп’ютера та скановані зображення або текст з сканера, а також зберігати їх у різних рострових форматах, таких як, наприклад, JPEG.
З точки зору користування програма дуже проста у використанні і має простий і інтуїтивно-зрозумілий інтерфейс.
В якості основного інструменту розробки застосовується Microsoft Visual Studio 2010. Мова програмування C #.
програма графічний редактор інтерфейс
Розділ 1. Первинний опис програмного забезпечення графічний редактор
1.1 Визначення вимог до програмного забезпечення Необхідно спроектувати і розробити модель системи, що працює з графікою.
Розробка багатофункціонального растрового графічного редактора зі стандартними функціями малювання і можливостями автоматичної заміни колірної гами зображення та ін Система повинна бути витримана в єдиному стилі і забезпечена довідкової підсистемою із зазначенням можливостей.
1.2 Термінологія Графічний редактор — програма (або пакет програм), що дозволяє створювати і редагувати двовимірні зображення за допомогою комп’ютера.
Робоча область — область, на якій розташовується малюнок, як правило, дана область становить основну частину вікна.
Панель інструментів — знаходиться зліва від робочої області і містить кнопки інструментів для малювання.
Корекція зображення — зміна зображення за допомогою різних інструментів корекції.
Інвертація зображення — заміна кольорів у зображенні.
Сепія — відтінок світлого коричневого кольору; колір, властивий чорно-білим фотографіям.
Палітра — містить набір кольорів для малювання, знаходиться також зліва від робочої області.
1.3 Специфікація якості програмного забезпечення
— Функціональність: програма повинна бути повністю завершеним програмним продуктом, що не вимагає яких-небудь додаткових спеціальних компонентів.
— Надійність: програма повинна бути автономною. Ефективність: програма повинна пред’являти мінімальні вимоги до апаратного забезпечення, програма повинна мати інтуїтивно зрозумілий користувальницький графічний інтерфейс.
1.4 Функціональна специфікація Мінімальні технічні характеристики комп’ютера, на якому гарантується стабільна робота програми:
— комп'ютер / процесор: комп’ютер з процесором класу Pentium II 450 МГц;
— пам'ять: 64 МБ ОЗУ;
— монітор: монітор Super VGA з роздільною здатністю 800×600 пікселів або більш високим, що підтримує 256 квітів;
— операційна система: операційна система Windows XP або нижче, необхідно наявність Microsoft. NET Framework Runtime v2.0;
— наявність вільного дискового простору на жорсткому диску.
Зовнішні функції:Робота в графічному редакторі відноситься до технології обробки графіки. Для даного графічного редактора характерно виконання таких функцій:Створення малюнка:
— в режимі ручного промальовування;
— з використанням панелі інструментів (штампів, примітивів).Маніпулювання малюнком:
— можливість створення чорно-білого зображення з поточного кольорового;
— можливість горизонтального і вертикального повороту малюнка;
— можливість використання інструменту «сепія» — зафарбування зображення в світло-коричневих тонах;
— можливість інвертування кольорів. Робота з кольорами:
— створення своєї палітри кольорів;
— можливість застосовувати для малювання довільні «фарби» ;
— можливість вибору заливки до початку малювання фігури;
— можливість налаштування інтенсивності кольору. Робота з файлами:
— запис малюнка на диск у вигляді файлу стандартного формату *. Jpg;
— читання файлу з диска;
— збереження змін у файлі;
— відкриття графічного файлу певного формату. Панель інструментів використовується:
— для малювання прямих ліній;
— для малювання олівцем;
— окружностей (овалів, еліпсів);
— прямокутників (квадратів).Робота з видом графічного редактора:
— настройка панелей інструментів;
— можливість роботи в повноекранному режимі. Критичні випадки:
— відсутність дозволу на читання файлу. Дані файлу повинні бути пропущені;
— завершення роботи Windows. У цьому випадку програма повинна завершувати свою роботу, не застосовуючи вибрані користувачем налаштування.
1.5 Проектування
1.5.1 Проектування архітектури програми Розглянемо архітектуру проектованої програми.
Рис. 1 — Структура програми В основному, доступ до всіх основних підсистем здійснюється через підсистему інтерфейсу програми MyPaint.
Підсистема роботи з інструментами включає в себе вибір і використання різних інструментів для малювання. Підсистема настройки вигляду графічного редактора дозволяє користувачеві налаштовувати панелі інструментів, а також працювати з редактором в повноекранному режимі. Підсистема роботи з файлами. Використовуючи функції даної підсистеми можна виконувати команди створення, збереження і запису файлу на диск, а також відкриття графічного файлу. Сюди ж можна віднести вихід з програми.
Підсистема корекції зображення включає в себе вертикальний або горизонтальний поворот зображення, можливість створити чорно-біле зображення з готового кольорового, можливість інвертування кольорів, можливість корекції зображення за допомогою інструменту «Сепія». Підсистема вибору робочих квітів.
За допомогою даної підсистеми можна встановити колір фону і малюнка, кольору кордону і заливки змальованих фігур. Також графічний редактор дає можливість користувачеві змінювати палітру.
1.5.2 Проектування структури даних Структура даних — це виконавець, який організовує роботу з даними, включаючи їх зберігання, додавання і видалення, модифікацію, пошук і т.д. Структура даних підтримує певний порядок доступу до них. Структуру даних можна розглядати як свого роду склад або бібліотеку.
При описі структури даних потрібно перерахувати набір дій, які можливі для неї, і чітко описати результат кожної дії. Будемо називати такі дії приписами.
З програмної точки зору, системі розпоряджень структури даних відповідає набір функцій, які працюють над спільними змінними.
Структури даних найзручніше реалізовувати в об'єктно-орієнтованих мовах. У них структурі даних відповідає клас, самі дані зберігаються в змінних-членах класу (або доступ до даних здійснюється через змінні-члени), системі розпоряджень відповідає набір методів класу.
В якості прикладу розглянемо лістинг роботи з файлами в графічному редакторі, а саме створення нового файлу, відкриття та закриття файлу, вихід з програми.
internal static System.Drawing.Bitmap _new {
get {
object obj = ResourceManager. GetObject («new», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap close {
get {
object obj = ResourceManager. GetObject («close», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap open2 {
get {
object obj = ResourceManager. GetObject («open2», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap exit {
get {
object obj = ResourceManager. GetObject («exit», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
1.5.3 Проектування графічного інтерфейсу
Інтерфейс — сукупність технічних, програмних і методичних засобів сполучення в обчислювальній системі користувачів з пристроями і програмами, а також пристроїв з іншими пристроями і програмами.
Інтерфейс — в широкому сенсі слова, це спосіб (стандарт) взаємодії між об'єктами. Інтерфейс в технічному сенсі слова задає параметри, процедури і характеристики взаємодії об'єктів. Інтерфейс користувача — це сукупність програмних і апаратних засобів, що забезпечують взаємодію користувача з комп’ютером.
Основу такої взаємодії складають діалоги. Під діалогом в даному випадку розуміють регламентований обмін інформацією між людиною і комп’ютером, здійснюваний в реальному масштабі часу і спрямований на спільне вирішення конкретного завдання. Кожен діалог складається з окремих процесів введення / виводу, які фізично забезпечують зв’язок користувача і комп’ютера.
Обмін інформацією здійснюється передачею повідомлення.
Розглянемо первинну структуру MyPaint в Сase Diagram
Рис. 2 — Структурна диаграмма MyPaint
Робота з графічним редактором MyPaint починається зі створення нового файлу зображення, при цьому користувачеві пропонується ввести розміри і налаштування зображення в діалоговому вікні наступного вигляду:
Рис. 3 — Вікно налаштування параметрів нового зображення Користувальницький інтерфейс графічного редактора організується наступним чином.
З лівого боку екрана розташовується набір піктограм (умовних малюнків) із зображенням інструментів, якими можна користуватися в процесі редагування зображень. Це так звана панель інструментів, яка містить чотири основних інструмента малювання: олівець, лінія, прямокутник, еліпс.
Рис. 4 — Панель інструментів На малюнку 4 представлений зовнішній вигляд графічного редактора, в самому верху головної форми розташовується стандартна панель швидкого запуску, що містить наступні кнопки: створення, відкриття, закриття файлу, збереження файлу, скасування останньої дії.
Рис. 5 — Діалогове вікно вибору параметрів шрифту
Безпосередньо над робочою областю графічного редактора знаходиться рядок меню. Меню File містить наступні пункти: New, Open, Save, Save as, CloseExit.
Рис. 6 — Пункти меню File
Меню Edit містить пункти меню Undo і Redo.
Рис. 7 — Пункти меню Edit
Меню View містить пункти і підпункти, розглянемо їх. Пункт меню Full screen дозволяє працювати в графічному редакторі в повноекранному режимі. Пункт Toolbars містить підпункти Standard, Tools, Formatting відповідні назвам панелей інструментів.
Рис. 8 — Пункти і підпункти меню View
Пункт меню Correction меню Image містить три підпункти: Make B / W — що означає «зробити зображення чорно-білим», Invert colors — «інвертування кольору», Sepia — забарвлення зображення в бежеві тони.
Рис. 9 — Підпункти меню Correction
Пункт меню Flip містить підпункти Horizontally і Vertically, які міняю положення зображення горизонтально і вертикально відповідно.
Рис. 10 — Підпункти меню Flip
Меню Help містить пункт меню About, що містить інформацію про автора проекту.
Рис. 11 — Пункт меню About меню Help
Коли користувач вибирає олівець або лінію в якості інструменту малювання, то над рядком меню відбиваються дві калібрувальні шкали, одна з яких відповідає за товщину лінії, а інша за інтенсивність кольору лінії. Поруч знаходиться кнопка, що викликає діалогове вікно, що містить палітру кольорів.
Рис. 12 — Калібрувальні шкали і кнопка «Палітра»
У випадку, якщо користувач вибирає в якості інструменту малювання еліпс або прямокутник, над рядком меню додається ще одна панель, що містить калібрувальну шкалу інтенсивності кольору заливки прямокутника або еліпса, а також палітру для вибору кольору заливки даних фігур.
Рис. 13 — Калібрувальна шкала і палітра для заливки фігур
Розділ 2. Продовження життєвого циклу графічного редактора
2.1 Специфікація класів Розглянемо класи та методи, що використовуються при написанні графічного редактора.
Клас — це конструктор, який дозволяє створювати свої власні користувальницькі типи шляхом групування змінних інших типів, методів і подій, створивши об'єкти або екземпляри, призначені змінної.
Змінна залишається в пам’яті, поки всі посилання на неї не вийдуть з області видимості. Метод являє собою блок коду, що містить набір інструкцій.
Програма ініціює виконання операторів, викликаючи метод і задаючи необхідні аргументи методу. У C # всі інструкції виконуються в контексті методу.
Розглянемо первинну діаграму класів
«СlassDiagram»
Рис. 14 — Первинна діаграма класів
Перейдемо до розгляду класу class Resources, в якому реалізовані основні функції графічного редактора, безпосередньо пов’язані з малюванням.
internal static System.Drawing.Bitmap palette — палітра кольорів.
internal static System.Drawing.Bitmap pencil — інструмент «Олівець».
internal static System.Drawing.Bitmap toolLine — інструмент малювання «Лінія».
internal static System.Drawing.Bitmap toolsEllipse — інструмент малювання «Еліпс».
internal static System.Drawing.Bitmap toolsRectangle — інструмент малювання «Прямокутник».
2.2 Опис алгоритму природною мовою Роботу програми можна представити у вигляді первинного алгоритму, представленого на малюнку нижче.
Рис. 15 — Алгоритм роботи з графічним редактором
2.3 Атестація
2.3.1 Тестування Для тестування програми проводилися різні маніпуляції з даними, штучно створювалися всілякі критичні ситуації.
У ряді тестів були виявлені кілька помилок. Приміром, було зроблено спробу відредагувати і зберегти графічний файл з атрибутом «Тільки для читання» за допомогою графічного редактора.
При спробі збереження змін в даному файлі з’явилося вікно з попередженням наступного вигляду:
Малюнок 11 — Вікно помилки запису файлу В цілому, потрібно зазначити, що програма досить надійна і збоїв при роботі з графікою не дає.
2.3.2 Керівництво адміністратора Програма поставляється у вигляді папки з назвою MyPaint, що містить проект Microsoft Visual Studio 2010.
Програма не розділяє повноваження на користувальницькі й адміністраторські, внаслідок чого керівництво адміністратора буде ідентично керівництва користувача.
2.3.3 Керівництво користувача Програма призначена для створення і редагування графічних зображень з розширенням *. Jpg.
Даний графічний редактор досить простий у використанні має достатньо необхідних функцій, щоб ефективно працювати з графічними файлами.
Для створення нового зображення виберіть пункт «New» в меню «File». Налаштуйте параметри створюваного зображення, такі як: висота, ширина, фон зображення, а також кількість точок на дюйм.
Після цього відкриється чисте полотно, на якому можна буде створювати зображення. Для збереження зображення використовуйте пункт меню «Save» або «Save as».
Щоб відкрити графічний файл для його редагування виберете пункт «Open». Щоб закрити зображення, скористайтеся пунктом меню «Close».
Щоб вийти з програми виберете пункт меню «Exit».
Для створення зображення використовуйте палітру, а також панель інструментів, налаштовуйте товщину та інтенсивність кольору ліній за допомогою двох калібрувальних шкал.
Для заливки геометричних фігур використовуйте окрему палітру і калібрувальну шкалу, регулюючу інтенсивність кольору заливки.
Для скасування останньої дії, вчиненого над редагованим зображенням, натисніть кнопку «Undo» на панелі швидкого запуску.
Якщо ж скасування дії все ж не знадобилася, скористайтеся кнопкою «Redo».
При необхідності працювати в графічному редакторі в повноекранному режимі, скористайтеся пунктом меню View, яке називається Full screen.
Налаштовуйте зовнішній вигляд графічного редактора, прибираючи або додаючи панелі інструментів Standard, Tools, Formatting використовуючи пункт меню Toolbars меню View.
Розділ 3. Аналіз впливу зміни вимог на зміну архітектури програмного забезпечення
3.1 Вимоги споживача
Вирази фактів та припущень які описують очікування до системи в термінах цілей, середовища, обмежень, та міри ефективності й придатності. Споживачі це ті, хто виконують вісім первинних функцій системної інженерії, з особливим наголосом на операторі, як на ключовому споживачі. Операційні вимоги опишуть базову необхідність, і як мінімум дадуть відповідь на запитання, з даного списку
— Операційне поширення і розгортання: Де використають систему?
— Профіль чи сценарій місії: Як система буде виконувати свої завдання?
— Продуктивність та пов’язані параметри: Які параметри критичні для виконання місії?
— Використання середовища: Як будуть використовуватись різноманітні компоненти системи?
— Вимоги ефективності: Якою ефективною має бути система для виконання своєї місії?
— Операційний життєвий цикл: Як довго система буде використовуватись споживачем?
— Середовище: Яких середовищ система очікує щоб працювати ефективно?
3.2 Архітектура програмного забезпечення В даний час не існує загальноприйнятого визначення терміна «архітектура програмного забезпечення». У той же час, існує велика кількість різних визначень цього поняття, що мають багато в чому схожий сенс. Як приклад можна навести наступне визначення: архітектура програмного забезпечення — це первинна організація системи, сформована її компонентами, відносинами між компонентами і зовнішнім середовищем системи, а також принципами, що визначають дизайн і еволюцію системи
3.3 Випадки зміни архітектури програмного забезпечення Потреба у зміні існуючого програмного забезпечення може виникнути в ході вирішення широкого кола завдань по його модернізації. У загальному випадку зміни існуючого програмного забезпечення здатні торкнутися не тільки його код, але й всі інші артефакти, пов’язані з трансформованою програмною системою. Однією з найбільш істотних різновидів тут є зміна архітектури програмної системи. В якості прикладів можна навести такі сценарії, що вимагають зміни архітектури існуючого ПЗ:
Перетворення, зумовлені функціональними змінами ПЗ. Бажано, щоб впровадження нової функціональності не торкнулося існуючу логіку системи. Також бажано, щоб складність впровадження нової функціональності в існуючу систему не перевищувало істотним чином складність реалізації цієї функціональності в рамках нового проекту. Гарна архітектура дозволяє досягти поставлених цілей. Отже, зміна існуючої архітектури — хороший крок на шляху впровадження нової функціональності, до того ж полегшує і подальшу еволюцію системи.
Зміна платформи ПЗ. Вкрай бажано, щоб зміна платформи ПЗ як можна менше торкнулася існуючий код, і щоб можна було обмежитися змінами тільки у вузькій переносних залежною прошарку системи. Виділення такий прошарку — архітектурна завдання. Її рішення завжди пов’язане з необхідністю зміни архітектури.
Перетворення, пов’язані з реорганізацією компанії, що веде розробку. Прикладом, такої реорганізації може стати аутсорсинг. Рішення про використання аутсорсинга — типовий крок по оптимізації виробництва. На жаль, цей крок часто ускладнюється проблемою виділення і передачі компонентів для зовнішньої розробки. Зміна архітектури програмної системи здатне полегшити вирішення цього завдання.
Список сценаріїв призводять до потреби у зміні архітектури існуючого ПЗ на цьому не вичерпується: наведені вище приклади покликані лише продемонструвати широкий спектр завдань, які обумовлюють необхідність подібних змін.
3.4 Нові вимоги до програмного забезпечення На даний час маємо простий графічний редактор «MyPaint», не важкий у використанні, та не великими вимогами до платформи.
Рис. 16 — Створений графічний редактор «MyPaint»
При внесенні нових вимог алгоритм нашої програми зміниться і буде виглядати так як на малюнку нижче:
Рис. 17 — Остаточний алгоритм MyPaint
Додаємо нові вимоги до нашого графічного редактора, пункт меню Image який містить два пункти. Перший пункт Correction містить три підпункти: Make B / W — що означає «зробити зображення чорно-білим», Invert colors — «інвертування кольору», Sepia — забарвлення зображення в бежеві тони.
Рис. 18 — Підпункти меню Correction
Пункт меню Flip містить підпункти Horizontally і Vertically, які міняю положення зображення горизонтально і вертикально відповідно.
Рис. 19 — Підпункти меню Flip
Так як ми ввели з новими вимогами декілька нових функцій, таким чином у нас зміниться Сase Diagram та Class Diagram.
Розглянемо CaseDiagram з новими вимогами.
Рис. 20 — Діаграма структури з новими вимогами На (Рис. 20) ми бачимо, що структура нашої програми змінилася, з новими вимогами, ми додали до структури нашої програми елемент Image, який містить два пункти меню це Correction, та Flip, Обидва відповідають за назначені їм функції.
Так як ми вели в структурну діаграму нові вимоги, які визвали зміну структури програмного забезпечення у нас після опису нових функцій створюється новий клас:
Розглянемо клас class Draw, що дозволяє редагувати графічне зображення різними методами в графічному редакторі.
static public Bitmap MakeBW (Bitmap bmp) — створення чорно-білого зображення.
static public Bitmap InvertColors (Bitmap bmp) — інвертація квітів, а саме заміна кольорів зображення на протилежні.
static public Bitmap Sepia (Bitmap bmp) — забарвлення зображення в бежеві відтінки.
static public Bitmap FlipHorizontally (Bitmap bmp) — горизонтальний поворот малюнка.
static public Bitmap FlipVertically (Bitmap bmp) — вертикальний поворот малюнка.
Рис. 21 — Class Diagram з классом Draw
Висновок В рамках дипломної роботи була розроблена програма — графічний редактор «MyPaint».
Графічний редактор є спрощеним аналогом Paint, має англомовний інтерфейс, тому може використовуватися широким колом користувачів. О днак, не дивлячись на свою простоту, редактор володіє рядом досить таки складних функцій, які не реалізовані в стандартному редакторі Paint, наприклад, вертикальний і горизонтальний поворот малюнка, перетворення кольорового зображення в чорно-біле або фарбування в бежеві тони і т. д.
У процесі проектування використовувалися методології модульного та об'єктно-орієнтованого програмування.
Для розробки даної програми, потрібно було грамотно спроектувати внутрішню архітектуру програми і реалізацію необхідних класів.
При розробці даного програмного засобу застосовувався мову програмування С #, як один з найбільш сучасних і перспективних мов програмування.
Проаналізувавши початкові діаграми з початковими вимогами, та остаточні діаграми з новими вимогами, з цього випливає що зміна вимог впливає на зміну архітектури програмного забезпечення
Список використаних джерел
1. Microsoft Corporation, MSDN Library — 2005
2. Е. А. Жоголев «Технология программирования» — М., Научный мир, 2004, 216 с.
3. Э. Троелсен «С# и платформа.NET. Библиотека программиста.» — Спб., Питер, 2004, 796 с.
Додаток, А Лістінг файлу Resources.Designer.cs
namespace MISC. Properties {
using System;
[global:System.CodeDom.Compiler. GeneratedCodeAttribute («System.Resources.Tools.StronglyTypedResourceBuilder», «2.0.0.0»)]
[global:System.Diagnostics.DebuggerNonUserCodeAttribute ()]
[global:System.Runtime.CompilerServices.CompilerGeneratedAttribute ()]
internal class Resources {
private static global: System.Resources.ResourceManager resourceMan;
private static global: System.Globalization.CultureInfo resourceCulture;
[global: System.Diagnostics. CodeAnalysis. SuppressMessageAttribute («Microsoft.Performance», «CA1811:AvoidUncalledPrivateCode»)]
internal Resources () {
}
[global: System.ComponentModel.Editor BrowsableAttribute (global:System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global: System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals (resourceMan, null)) {
global:System.Resources.ResourceManager temp = new global: System.Resources.ResourceManager («MISC.Properties.Resources», typeof (Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
[global: System.ComponentModel.EditorBrowsableAttribute (global:System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global: System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
internal static System.Drawing.Bitmap _new {
get {
object obj = ResourceManager. GetObject («new», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap about {
get {
object obj = ResourceManager. GetObject («about», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap about16 {
get {
object obj = ResourceManager. GetObject («about16», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap close {
get {
object obj = ResourceManager. GetObject («close», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static byte[] cursor_pencil {
get {
object obj = ResourceManager. GetObject («cursor_pencil», resourceCulture);
return ((byte[])(obj));
}
internal static System.Drawing.Bitmap exit {
get {
object obj = ResourceManager. GetObject («exit», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap noFileOpened {
get {
object obj = ResourceManager. GetObject («noFileOpened», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap open2 {
get {
object obj = ResourceManager. GetObject («open2», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap palette {
get {
object obj = ResourceManager. GetObject («palette», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap pencil {
get {
object obj = ResourceManager. GetObject («pencil», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap redo {
get {
object obj = ResourceManager. GetObject («redo», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap save {
get {
object obj = ResourceManager. GetObject («save», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap saveas {
get {
object obj = ResourceManager. GetObject («saveas», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap toolLine {
get {
object obj = ResourceManager. GetObject («toolLine», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap toolsEllipse2 {
get {
object obj = ResourceManager. GetObject («toolsEllipse2», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap toolsLine {
get {
object obj = ResourceManager. GetObject («toolsLine», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap toolsLine1 {
get {
object obj = ResourceManager. GetObject («toolsLine1», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap toolsRectangle {
get {
object obj = ResourceManager. GetObject («toolsRectangle», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap toolsRectangle1 {
get {
object obj = ResourceManager. GetObject («toolsRectangle1», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
internal static System.Drawing.Bitmap undo {
get {
object obj = ResourceManager. GetObject («undo», resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
Лістінг файлу Draw. cs
using System;
using System.Collections.Generic;
using System. Text;
using System. Drawing;
using System.Drawing.Imaging;
namespace MISC. Classes
{
class Draw
static public Bitmap SetColorMatrix (Bitmap bmp, ColorMatrix cm)
{
ImageAttributes ia = new ImageAttributes ();
ia.SetColorMatrix (cm);
Bitmap temp = new Bitmap (bmp.Width, bmp. Height);
Graphics gr = Graphics. FromImage (temp);
gr.DrawImage (bmp, new Rectangle (0, 0, bmp. Width, bmp. Height), 0, 0, bmp. Width, bmp. Height, GraphicsUnit. Pixel, ia);
gr.Dispose ();
ia.Dispose ();
return temp;
}
static public Bitmap InvertColors (Bitmap bmp)
{
ColorMatrix cm = new ColorMatrix (
new float[][] {
new float[] {-1, 0, 0, 0, 0},
new float[] { 0,-1, 0, 0, 0},
new float[] { 0, 0,-1, 0, 0},
new float[] { 0, 0, 0, 1, 0},
new float[] { 1, 1, 1, 0, 1}
}
bmp = SetColorMatrix (bmp, cm);
return bmp;
}
static public Bitmap MakeBW (Bitmap bmp)
{
ColorMatrix cm = new ColorMatrix (
new float[][] {
new float[] {0.3f, 0.3f, 0.3f, 0, 0},
new float[] {0.59f, 0.59f, 0.59f, 0, 0},
new float[] {0.11f, 0.11f, 0.11f, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1}
}
bmp = SetColorMatrix (bmp, cm);
return bmp;
}
static public Bitmap Sepia (Bitmap bmp)
{
ColorMatrix cm = new ColorMatrix (
new float[][] {
new float[] {0.393f, 0.349f, 0.272f, 0, 0},
new float[] {0.769f, 0.686f, 0.534f, 0, 0},
new float[] {0.189f, 0.168f, 0.131f, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1}
}
bmp = SetColorMatrix (bmp, cm);
return bmp;
}
static public Bitmap FlipHorizontally (Bitmap bmp)
{
bmp.RotateFlip (RotateFlipType.RotateNoneFlipX);
return bmp;
}
static public Bitmap FlipVertically (Bitmap bmp)
{
bmp.RotateFlip (RotateFlipType.RotateNoneFlipY);
return bmp;
static public Bitmap Rotate90Clockwise (Bitmap bmp)
return bmp;
static public Bitmap Rotate90Anticlockwise (Bitmap bmp)
return bmp;
}
static public Bitmap Rotate180(Bitmap bmp)
{
return bmp;
}