gb.image и вывод изображений на форму

   

Добрый день!
Сегодня я хочу по говорить о библиотеке gb.image и выводе изображений на форму.
По моему эта тема ещё не была освещена в нашем блоге.

Реализуем простой пример:
Откроем файл с изображением и выведем его на форму в контейнер «DrawingArea», при этом изменим размер изображения чтобы оно помещалось в DrawingArea полностью.
А после изменим яркость.

Начнём.
Создадим новый проект выбрав опцию «Обработка изображений». Т.е. в проекте должны быть подключены компоненты gb.image и gb.image.effect.
Разместим на форме контрол контейнер DrawingArea с именем DrawingArea1.
Изменим свойство Border на Plain, чтобы можно было видеть границы изображения.
И изменим свойство Cashed на True. Это необходимо иначе будет возникать ошибка!
Ниже разместим контрол «ButtonBox» с именем ButtonBoxOpenFile. Кстате это новый контрол в версии 3. Он объединяет в себе контролы TextBox и Button. Очень удобен для реализации всевозможных выборов, позволяет и осуществлять выбор нажатием и выводить результат выбора в поле ввода.
FMain

Зададим глобальную переменную, объект в котором и будет хранится наше изображение.

Public hImage As Image

По событию Click() ButtonBoxOpenFile разместим код открытия файла изображений.

Public Sub ButtonBoxOpenFile_Click()
Dialog.Path = Application.Path
Dialog.Filter = ["*.jpg; *.jpeg; *.png; *.bmp", "Picture files"]
If Dialog.OpenFile() Then Return
ButtonBoxOpenFile.Text = Dialog.Path

Далее необходимо загрузить файл изображения в объект hImage.

hImage = Image.Load(ButtonBoxOpenFile.Text)

И вот теперь можно выводить или может даже точнее сказать РИСОВАТЬ изображение на DrawingArea1.
А рисовать выбранное изображение будет следующий код.

Draw.Begin(DrawingArea1)
Draw.Image(hImage, 0, 0)
Draw.End

За вывод изображение отвечает классы Draw или Paint (который позволяет работать с кистью). Мы будем использовать Draw.

Draw.Begin(DrawingArea1) — начинаем вывод в поле DrawingArea.

Draw.Image(hImage, 0, 0) — выводим изображение hImage с началом в 0.0 (левом верхнем углу)

Draw.End — заканчиваем вывод изображения

Причём конструкция
Draw.Begin(DrawingArea1)
Draw.End

является обязательной! А между началом и концом могут располагаться различные способы вывода.

Вот весь код проекта:

Public hImage As Image

Public Sub ButtonBoxOpenFile_Click()
Dialog.Path = Application.Path
Dialog.Filter = ["*.jpg; *.jpeg; *.png; *.bmp", "Picture files"]

If Dialog.OpenFile() Then Return
ButtonBoxOpenFile.Text = Dialog.Path

hImage = Image.Load(Dialog.Path)
Draw.Begin(DrawingArea1)
Draw.Image(hImage, 0, 0)
Draw.End

End

Теперь можно запустить и программа будет уже работать. Вот только ваше изображение, если вы выберете фотографию наверняка не выйдет в область вывода DrawingArea1.
Так давайте уменьшим наше изображение, смасштабируем под размеры DrawingArea1.
А сделать это очень просто с помощью того же метода Draw.Image.

Draw.Image(hImage, 0, 0, DrawingArea1.Width, DrawingArea1.Height)

Изображение конечно может стать непропорциональным, но не будем усложнять пример математическими расчетами.

Следующей нашей задачей было добавить яркости. За это отвечает метод Balance компонента gb.image.effect.

hImage.Balance(0.5, 0, 0)

Параметры метода это: яркость контраст и гамма соответственно. Изменяемые от -1 до 1. Значение 0 означает, что характеристика изображения не меняется. Т.е. в примере мы изменяем только яркость в +0,5. Располагать метод нужно до начал вывода изображения (до Draw.Begin).

Вот и все на этом наш простой пример законче.
Хоть он и простой, но учит главному — выводу изображения на форму. А методов по изменению и преобразованию изображений в библиотеке gb.image.effect предостаточно для любых экспериментов.
Можно и создавать градиенты, добавлять тени, просто заполнять область фоном. Поварачивать изображения, делать зеркальные отражения и многое другое, о чем лучше и точнее расскажет страница wiki.

 

До новых встреч.

Также вас может заинтересовать:

  1. Gambas — файлы и папки, урок 3. функция Dir и вывод файлов и каталогов
  2. Gambas — вывод уведомлений libnotify на экран
  3. Gambas — файлы и потоки. урок 1 — OpenDialog и чтение из файла
  4. Gambas — файлы и папки, урок 2. Класс Path и управление путями
  5. Новое в версии 3. Компоненты.

Оставить комментарий ↓