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

Метод 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 цього об'єкту.

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