- •Лабораторна робота №8-10. Тема: Розробка інтерфейсу користувача
- •Приклад mdi-інтерфейсу
- •Інтерфейс типу провідника
- •Редактор меню Menu Editor
- •Властивості меню для mdi-інтерфейсу
- •Властивості, що визначають стан пункту меню
- •Контекстне меню
- •Приклад створення меню
- •Рядок стану
- •Приклад створення рядка стану
- •Панель інструментів
- •Властивості панелі інструментів
- •Приклад створення панелі інструментів
- •Діалогові вікна
- •Вікно повідомлення
- •Icon - відображуваний поруч з текстом значок. Може приймати одне з значень (див. Таблицю нижче) перерахування MessageBoxIcon;
- •Діалогове вікно відкриття файлу
- •Діалогове вікно збереження файлу
- •Діалогове вікно налаштування шрифтів тексту
- •Діалогове вікно налаштування колірної палітри
- •Робота з картинками
- •Зображення, як властивість Image елемента управління
- •Малюємо картинки
- •Спосіб 2.
- •Метод DrawImage і його варіанти
- •Метод Save об'єкта Bitmap
- •Малюємо в пам'яті
- •Перемальовування картинок, фігур і тексту
- •Завдання
Метод Save об'єкта Bitmap
Зберігаємо зображення в файл. Метод Save зберігає картинку з об'єкта Bitmap у файл. Це може знадобитися тоді, коли картинка якось змінена. Ось програма, яка завантажує зображення з файлу Spacescape.JPG і зберігає в файлі Spacescape-1.JPG.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Фото As New Bitmap("Spacescape.JPG")
Фото.Save("Spacescape-1.JPG") 'Зберегли картинку в файлі
End Sub
Перетворюємо формат графічного файлу. У методу Save - кілька варіантів. Один з них дозволяє вказувати формат файлу, що зберігається. Тому в VB є можливість перетворити формат графічного файлу. Ось, наприклад, як просто перетворити файл з формату WMF в формат BMP:
Dim Картинка As New Bitmap ("DIME.WMF")
Картінка.Save ("DIME.BMP", System.Drawing.Imaging.ImageFormat.Bmp)
Перший рядок завантажує файл DIME.WMF в об'єкт Зображення класу Bitmap. Другий рядок зберігає цю картинку у файлі DIME.BMP. Однак не розширення BMP, зазначене нами, наказало комп'ютера змінити формат файлу. Це наказав зробити другий параметр методу - властивість Bmp класу ImageFormat, що належить простору імен System.Drawing.Imaging. Крім властивості Bmp у цього класу є ще десяток властивостей, що відповідають різним форматам графічних файлів. Проте не для всіх з них перетворення цим методом можливе або ж можливо так просто.
Малюємо в пам'яті
Програмісти знають, що в оперативній пам'яті ті чи інші дії відбуваються швидше, ніж на поверхні екрана. Так, збільшити на одиницю змінну в пам'яті швидше, ніж збільшити на одиницю число в текстовому полі. Те ж відноситься і до графіку. Малювання фігур і перетворення зображень безпосередньо на екрані відбувається повільніше, ніж ті ж дії в пам'яті. Тому, коли справа стосується малювання великого числа фігур і складних маніпуляцій з картинками, доцільно всі ці дії виконати в пам'яті, а людині показати тільки кінцевий результат.
Але що означає «малювати в пам'яті»? Поки ми вміємо в пам'яті тільки зберігати зображення в об'єкті Bitmap і там її трішки перетворювати. А як у пам'яті намалювати, наприклад, круг? Давайте подивимося.
VB дозволяє розглядати об'єкт Bitmap як якусь невидиму поверхню, для якої можна створити об'єкт класу Graphics точно так само, як ми створюємо об'єкт класу Graphics для форми або, скажімо, мітки. Як тільки об'єкт класу Graphics для об'єкта Bitmap створений, ви отримуєте можливість користуватися усіма його методами і, значить, малювати на невидимій поверхні невидимими інструментами все, що вашій душі завгодно, і поміщати туди будь-які картинки. Після того, як ви будете задоволені намальованим, ви можете одним оператором помістити його на загальний огляд на екран.
Ось програма:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Картинка As New Bitmap(600, 400) 'Створюємо пусту поверхню 600 на 400
Dim Гр As Graphics = Graphics.FromImage(Картинка) 'Створюємо над нею об’єкт класу Graphics
'Малюємо на поверхні:
Dim Векторний_малюнок As New Bitmap("DIME.WMF")
Гр.DrawImage(Векторный_рисунок, 10, 10)
Dim П As New RectangleF(300, 250, 160, 40)
Гр.FillRectangle(Brushes.White, П)
Гр.DrawString("Это монета", Me.Font, Brushes.Black, П)
'Переносимо на форму те, що намальовано на поверхні:
Dim Граф As Graphics = Me.CreateGraphics
Граф.DrawImage(Картинка, 0, 0)
End Sub
Пояснення. Результат роботи цієї програми – малюнок нижче, містить картинку, фігуру (білий прямокутник) і текст.
Всі ці елементи були спочатку намальовані в пам'яті в об'єкту Bitmap, потім одним оператором вміст об'єкта Bitmap було поміщено на форму.
Розглянемо програму детальніше, оператор за оператором.
Dim Картинка As New Bitmap(600, 400) 'Створюємо порожню поверхню 600 на 400
Тут ми стикаємося з ще одним варіантом конструктора об'єкту Bitmap. Об'єкт створюється порожнім, без картинки. Можна представити його, як чисту поверхню розміром 600 на 400, готову до того, щоб на ній що-небудь намалювали.
Dim Гр As Graphics = Graphics.FromImage(Картинка) 'Створюємо над нею об’єкт класу Graphics
Цей рядок створює для об'єкту Картинка об'єкт класу Graphics. Але, як бачите, спосіб створення тут не такий, як, скажімо, для форми. Там ми використовували функцію Creategraphics форми, тут же ми використовуємо функцію Fromimage класу Graphics. Саме класу, а не об'єкту. Відмінність в суті для вас проясниться пізніше.
Об'єкт класу Graphics створений і ви дістаєте можливість користуватися всіма його методами так, як якби ви малювали на формі або елементі управління. Наступні п'ять рядків процедури наносять на невидиму поверхню об'єкту Bitmap по черзі картинку монети, білий прямокутник і текст.
Останні два рядки процедури переносять вміст об'єкту Bitmap на форму. Для цього створюється об'єкт класу Graphics для форми і перенесення звично здійснюється методом DrawImage цього об'єкту.