- •Лабораторна робота №8-10. Тема: Розробка інтерфейсу користувача
- •Приклад mdi-інтерфейсу
- •Інтерфейс типу провідника
- •Редактор меню Menu Editor
- •Властивості меню для mdi-інтерфейсу
- •Властивості, що визначають стан пункту меню
- •Контекстне меню
- •Приклад створення меню
- •Рядок стану
- •Приклад створення рядка стану
- •Панель інструментів
- •Властивості панелі інструментів
- •Приклад створення панелі інструментів
- •Діалогові вікна
- •Вікно повідомлення
- •Icon - відображуваний поруч з текстом значок. Може приймати одне з значень (див. Таблицю нижче) перерахування MessageBoxIcon;
- •Діалогове вікно відкриття файлу
- •Діалогове вікно збереження файлу
- •Діалогове вікно налаштування шрифтів тексту
- •Діалогове вікно налаштування колірної палітри
- •Робота з картинками
- •Зображення, як властивість Image елемента управління
- •Малюємо картинки
- •Спосіб 2.
- •Метод DrawImage і його варіанти
- •Метод Save об'єкта Bitmap
- •Малюємо в пам'яті
- •Перемальовування картинок, фігур і тексту
- •Завдання
Малюємо картинки
З цього моменту ми будемо говорити про роботу з картинками в коді.
Встановлювати елементам управління властивість Image швидко і просто. Але для здійснення роботи з картинками потрібні й інші способи.
Об'єкти. У VB є спеціальні об'єкти для роботи з картинками. Для нас головний з них - об'єкт класу Bitmap. Він може працювати з усіма згаданими форматами файлів. Є ще клас Metafile, що враховує специфіку роботи з файлами векторної графіки, і клас Icon, враховує специфіку роботи з іконками. Існує ще згаданий вище клас Image, для якого класи Bitmap і Metafile є «спадкоємцями». Тому вважається, що об'єкти класів Bitmap і Metafile належать не тільки своїм класам, але і типу Image
Об'єкт класу Bitmap знаходиться в оперативній пам'яті і невидимий для нас. Його головна справа - отримати картинку з файлу і зберігати її. Зображення, природно, теж буде невидиме. У пам'яті воно може бути за нашим бажанням піддане різноманітної обробці, а потім, коли нам потрібно, воно з об'єкту Bitmap потрапляє на поверхню форми чи елементу управління, де ми його і побачимо.
Спосіб 1. Ось самий простий спосіб помістити картинку з файлу в Bitmap, а звідти без жодних перетворень - на елемент управління:
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim Картинка As New Bitmap("Spacescape.JPG")
PictureBox1.Image = Картинка
End Sub
Пояснення. Перший оператор створює об'єкт Зображення класу Bitmap і тут же за допомогою параметра конструктора поміщає в нього картинку з файлу Spacescape.JPG. Наступний оператор просто присвоює цю картинку властивості Image елемента управління PictureBox1. Про властивості Image ми вже говорили.
Спосіб 2.
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim Картинка As New Bitmap("Spacescape.JPG")
Dim Гр As Graphics = PictureBox2.CreateGraphics
Гр.DrawImage(Картинка, 0, 0)
End Sub
Тут картинка не присвоюється властивості Image елемента управління PictureBox2, а малюється на цьому елементі. Метод DrawImage об'єкта Гр малює вміст об'єкта Картинка на елементі, в результаті чого ми бачимо на ньому картинку. Лівий верхній кут картинки має на елементі управління координати 0, 0.
Аналогічно картинки можна малювати і на формі, і на інших елементах управління. Обидва способи на перший погляд дають один і той же результат, але насправді між ними є істотні відмінності, які ви поступово зрозумієте. Саме таке, що впадає в очі різниця - намальована картинка стирається, як тільки елемент управління, на якому вона намальована, виявляється загороджений іншими вікнами або засунуть вами за край екрану. Зображення ж, що є властивістю Image - не стирається.
Поговоримо детальніше про метод DrawImage.
Метод DrawImage і його варіанти
Ось програма:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Гр As Graphics = Me.CreateGraphics
Dim Фото As New Bitmap("Spacescape.JPG")
Dim Т As New Point(30, 10)
Dim П1 As New Rectangle(550, 10, 150, 130)
Dim П2 As New Rectangle(550, 160, 200, 70)
Dim П3 As New Rectangle(550, 250, 200, 150)
Dim П4 As New Rectangle(800, 170, 400, 300)
Гр.DrawImage(Фото, Т) ' Точка Т задає лівий верхній кут картинки
Гр.DrawImage(Фото, П1) ' Втискаємо картинку в прямокутник П1
Гр.DrawImage(Фото, П2) ' Втискаємо картинку в прямокутник П2
'Вирізаємо з картинки прямокутник П4 и втискаємо його в прямокутник П3:
Гр.DrawImage(Фото, П3, П4, GraphicsUnit.Pixel)
End Sub
Ось результат роботи програми
Параметр GraphicsUnit.Pixel означає, що одиницею вимірювання для прямокутника П4 ми вибрали піксель в об'єкті Фото. Не плутайте пікселі на формі і екрані з пікселями для невидимих об'єктах Bitmap. Не дивно, що прямокутник П4 ставимо з дуже великими величинами параметрів, адже вимірюються вони в цих самих невидимих пікселях.