§ 14. Интерактивная графика
14.3. Битовые образы
При работе с графикой удобно использовать битовые образы (битовые матрицы). Битовый образ представляет собой графическую поверхность, находящуюся в памяти компьютера, на которой можно построить изображение. Содержимое битового образа (рисунок) может быть выведено на канву. Сформировать битовый образ можно путем загрузки из bmp-файла или путем копирования фрагмента из другого битового образа, в том числе и с поверхности компонента Image. В программе битовый образ — это объект типа TBitmap. Класс TBitmap, определен в CBuilder как Graphic::TBitmap. Этот класс поддерживает как растровые изображения в виде массива пикселей, так и изображения в формате BMP. Некоторые свойства и методы объекта TBitmap приведены в примере 14.4. Описание битовой матрицы с именем Pict осуществляется следующим образом: Graphics::TBitmap *Pict = new Graphics::TBitmap(); — указатель на место в памяти, где будет размещен объект, хранящий изображение. Для вывода битового образа на канву можно воспользоваться методом Draw(x, y, Pict). Параметры x, y определяют местоположение верхнего левого угла изображения, хранящегося в переменной Pict (объект типа TBitmap). Пример 14.5. Создать проект, в котором по клику мыши поверх фонового изображения леса необходимо нарисовать картинки зверей, хранящихся в файлах. Для корректной работы все рисунки должны быть в BMP формате. Рисунки следует сохранить в папке Win32\Debug. Рисунки, на которых изображены звери, должны иметь однородный фон[1]. Этапы выполнения задания
3.1. Создать объект Pict для хранения битового образа; Битовые образы могут использоваться для заливки фигур, нарисованных на канве. Для этого свойству Brush -> Bitmap нужно присвоить значение битового образа. Image1->Canvas->Brush->Bitmap = Pict; После этой команды все фигуры для которых определена кисть будет залиты растровым изображением, которое хранится в битовом образе Pict. Если размеры битового образа меньше, чем область заливки, то область заливки замещается изображениями, которые хранятся в битовой матрице. Если область заливки меньше, то будет видна только часть изображения (пример 14.6). Если после заливки растровым изображением требуется опять вернуться к заливке цветом, то битовый образ должен быть удален из свойства кисти. Для этого можно воспользоваться командой: Image1->Canvas->Brush->Bitmap = NULL; [1] При необходимости рисунок нужно предварительно обработать в графическом редакторе. |
Использование битовых образов позволяет рисовать на невидимых виртуальных поверхностях — в буквальном смысле в оперативной памяти. При выводе графической информации удается избежать эффекта мигания, который возникает при непосредственной модификации внешнего вида элементов управления на форме. Основное преимущество использования битовых образов — скорость обработки и вывода изображений. Пример 14.4. Некоторые свойства объекта TBitmap.
Некоторые методы объекта TBitmap. Метод Assign копирует изображение из другого графического объекта. Методы LoadFromFile и SaveToFile используются для чтения изображение из файла и записи изображения в файл. Пример 14.5. Форма на этапе конструирования: Обработчик события OnCreat.
Обработчик события OnMouseDown
Работающее приложение: Пример 14.6. Заливка с использованием битовых образов: Код обработчика нажатия кнопки «Эллипс» (для прямоугольника аналогично):
Константа NULL, имеет значение «ничего». Формально — это значение указателя, который не ссылается ни на какой объект. |