Лекция Паскаль 9 – Стандартные графические процедуры, класс TCanvas


Тема: Стандартные графические процедуры.

Цель: Ознакомиться со стандартными графическими процедурами.

1. класс TCanvas.

В Windows для обозначения канвы, на которой выполняется рисунок, используется термин контекст устройства (DC). Взаимодействие с контекстами устройств на уровне вызова функций АРЕ может оказаться достаточно сложным.Поэтому сначала нужно держать в системе Windows дескриптор контекста устройства (ссылка на формальное описание возможностей устройства), после чего выбрать в него нужные нам объекты (перья, кисти, шрифты и т.п.). Только после этого можно на нем что-то рисовать. По завершении рисования, перед тем, как удалить контекст устройства, нужно высвободить выбраны в него объекты. В противном случае память, используемая в приложении, никогда не будет возвращена операционной системе.

Существующий класс TCanvas из библиотеки визуальных компонентов значительно облегчает работу с контекстами устройств. В качестве свойств (property) входит в многих компонентов.

Класс TCanvas имеет много свойств и методов.

1.1 .Основные свойства класса TCanvas:

 

свойство описание
Brush Задает цвет заливки и шаблон при окраски фигур
ClipRect Представляет собой текущий прямоугольный регион отсечения канвы. Все операции графического вывода ограничиваются заданным прямоугольником. Свойство только для чтения
CopyMode Определяет, каким образом будет происходить копирования (метод CopyRect) на эту канву изображения со второго места: один к одному, с инверсией изображения и т.п.
Font Содержит шрифт, класс TCanvas использует при выводе текста (метод TextOut)
Handle Дескриптор (HDC) канвы. Данное свойство дает возможность напрямую вызывать функции API Windows
Pen Определяет стиль и цвет линий
PenPos Задает координаты х и у для очередной операции рисования
Pixels Представляет собой двумерный массив пикселей объекта Canvas
Читать  Поиск элемента в таблице – Типичные задачи при работе с таблицами

1.2 .Основные методы класса TCanvas:

 

свойство описание
Arc Рисует на канве текущим пером сегмент эллипса
BrushCopy Рисует битную матрицу с прозрачным фоном
CopyRect Копирует на канву часть изображения
Draw Копирует изображение из памяти на канву
Ellipse Рисует текущим пером эллипс и закрашивает его текущей кистью
FloodFill Выполняет заливку области канвы текущей кистью

 

свойство описание
LineTo Проводит текущим пером линию с данной точки в точку с координатами х и у
MoveTo Устанавливает текущее положение пера
Pie Рисует на канве сектор эллипса
Polygon С помощью массива объектов типа TPoint строит многоугольник и закрашивает его текущей кистью
Polyline С помощью массива объектов типа TPoint строит текущим пером ломаную линию. Автоматического замыкания контура при этом не происходит
Rectangle Рисует на канве текущим пером прямоугольник и закрашивает его текущей кистью
RoundRect Рисует закрашенный прямоугольник с закругленными углами
StretchDraw Копирует битовую матрицу из памяти на канву. При этом в соответствии с целевой прямоугольной областью происходит масштабирование (растяжения или сжатия) растровых изображений
TextExtend Возвращает высоту и ширину строки Text в пикселях. При расчетах учитывается текущий шрифт канвы
TextHight Возвращает высоту строки Text в пикселях. При расчетах учитывается текущий шрифт канвы
TextOut Выводит строку Text с помощью текущего шрифта в заданном месте канвы
TextRect Выводит текст с отсечением. При этом часть текста, которая попала за пределы прямоугольного региона отсечения, становится невидимой
Читать  Множества в Паскаль – Операции над множествами

Перечисленные свойства и методы представляют собой лишь незначительную часть возможностей контекстов устройств Windows. Но даже эта часть может удовлетворить 80% потребностей, которые возникают при работе с графикой. Однако, перед тем, как перейти к рассмотрению класса TCanvas, остановимся на графических объектах, которые применяются в программирования для Windows.

В интерфейсе графических устройств (GDI) Windows имеется большое количество типов объектов, которые имеют определенное влияние на работу контекстов графических устройств. Наиболее часто применяемыми являются объекты — пера, кисти, шрифты. Менее популярны объекты — палитры, битовые матрицы, регионы отсечения.

1.3 .класс TPen.

Рассмотрим возможности вложенного объекта перо (pen).

С помощью пера можно рисовать разные линии — как отдельные, которые соединяют одну точку с другой, так и линии, ограничивающие различные геометрические фигуры — прямоугольник, эллипс, многоугольник.

Для доступа к перу используют свойство Pen класса TCanvas, которая представляет собой объект типа TPen.

Свойства класса TPen:

свойство описание
Color Задает цвет линии

 

свойство описание
Handle Представляет собой дескриптор пера (HPEN). Используется в случае прямых вызовов соответствующей функцией API
Mode Определяет способ рисования линии: нормальный, инверсный, с исключительным или (xor) тому подобное
Style Определяет стиль линии: сплошной, пунктирный, штриховой, штрих пунктирный, прозрачный и т.д.
Width Задает толщину линии в пикселях

В большинстве случаев использование этих свойств не вызывает затруднений.

Читать  Лекция Паскаль 10 – Массивы, Объявления одномерного массива, Индексация элементов

Замечания. Если нам необходимо скрыть окно, на котором выведено рисунок и текст, а затем его снова активизировать, то окажется, что рисунок на форме исчез. Это произошло потому, что рисунок пока носит временный характер. Чтобы сделать его постоянным, нужно поместить программный код в обработчик события OnPaint формы. Тогда при необходимости перерисовать окно будет генерироваться событие OnPaint

— рисунок восстановится.

Штриховой и пунктирный стиле можно использовать только при работе с пером толщиной 1 пиксел. С помощью стиля psClear можно изымать линии, которые рисуются на внешней границе таких объектов, как, например, прямоугольники, эллипсы, и закрашены многоугольники.

1.4 .класс TВrush.

Кисти определяют способ окраски фигур. С помощью активной кисти заполняется внутренняя область каждой из нарисованных фигур — эллипсов, прямоугольников, многоугольников и тому подобное. Кисть может нарисовать штриховку или битовую матрицу. Внешний вид кисти можно контролировать с помощью свойства Brash класса TCanvas, который, в свою очередь, является объектом класса TBrash. Как и TPen, TBrush не содержит методов и событий для программирования.

Свойства класса TBrush:

свойство описание
Bitmap Идентифицирует битную матрицу, которая используется в качестве фона кисти
Color Задает цвет кисти
Handle Представляет собой дескриптор кисти (HBRUSH).              Используется в случае прямых вызовов соответствующей функцией API
Style Определяет стиль кисти: сплошной, прозрачный, одна из возможных штриховок

Свойство Style по умолчанию имеет значение bsSolid (сплошная заливка). Если при закрашивании геометрических фигур Вы хотите использовать штриховку, то свойства Style нужна присвоить один из следующих стилей: bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross.

Читать  Управление динамической памятью в Турбо Паскаль

Когда Вы используете кисть — штриховку, ее свойство Color определяет цвет линии штриховки. При закрашивании графических объектов с помощью такой кисти VCL автоматически устанавливает режим фона в Transparent (например, прозрачный). Это значит, что цвет фона кисти будет совпадать с цветом окна, на котором нарисован графический объект.

[Всего голосов: 3    Средний: 5/5]