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

Зададим глобальную переменную, объект в котором и будет хранится наше изображение.
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.
До новых встреч.
Также вас может заинтересовать: