Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_8-10.docx
Скачиваний:
5
Добавлен:
10.07.2019
Размер:
1.45 Mб
Скачать

Малюємо картинки

З цього моменту ми будемо говорити про роботу з картинками в коді.

Встановлювати елементам управління властивість 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 ставимо з дуже великими величинами параметрів, адже вимірюються вони в цих самих невидимих пікселях.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]