Карандаш и кисть
Методы вычерчивания графических примитивов обеспечивают только вычерчивание. Вид графического элемента определяют свойства Реп (карандаш) и Brush (кисть) той поверхности (Canvas), на которой рисует метод.
Карандаш и кисть, являясь свойствами объекта Canvas, в свою очередь представляют собой объекты Реп и Brush. Свойства объекта Реп (табл. 2) задают цвет, толщину и тип линии или границы геометрической фигуры. Свойства объекта Brush (табл. 3) задают цвет и способ закраски области внутри прямоугольника, круга, сектора или замкнутого контура.
Таблица 2- Свойства объекта Реп (карандаш)
Свойство |
Определяет |
Color |
Цвет линии |
Width |
Толщину линии (задается в пикселях) |
Style |
Вид линии (psSolid – сплошная; psDash – пунктирная, длинные штрихи; psDot – пунктирная, короткие штрихи; psDashDot – пунктирная, чередование длинного и короткого штрихов; psDashDotDot – пунктирная, чередование одного длинного и двух коротких штрихов; psClear – линия не отображается (используется, если не надо изображать границу области – например, прямоугольника) |
Таблица 3. Свойства объекта Brush (кисть)
Свойство |
Определяет |
Color |
Цвет закрашивания замкнутой области |
Style |
Стиль заполнения области (bsSolid – сплошная заливка. Штриховка: bsHorizontal – горизонтальная; bsVertical – вертикальная; bsFDiagonal – диагональная с наклоном линий вперед; bsBDiagonal – диагональная с наклоном линий назад; bsCross – в клетку; bsDiagCross – диагональная клетка |
Следующие команды рисуют олимпийский флаг:
// полотнище флага
Image1->Canvas->Pen->Width = 1;
Image1->Canvas->Pen->Color = clBlack;
Image1->Canvas->Brush->Color = clCream;
Image1->Canvas->Rectangle(30,30,150,150);
Image1->Canvas->Pen->Width =2; // ширина колец
Image1->Canvas->Brush->Style = bsClear; //чтобы круг, нарисованный методом Ellipse, не был закрашен
// рисуем кольца
Image1->Canvas->Pen->Color = clBlue;
Image1->Canvas->Ellipse(40,40,80,80);
Image1->Canvas->Pen->Color = clBlack;
Image1->Canvas->Ellipse(70,40,110, 80);
Image1->Canvas->Pen->Color = clRed;
Image1->Canvas->Ellipse(100,40,140, 80);
Image1->Canvas->Pen->Color = clYellow;
Image1->Canvas->Ellipse(55,65,95,105);
Image1->Canvas->Pen->Color = clGreen;
Image1->Canvas->Ellipse(85,65,125,105);
}
Графические примитивы
Любая картинка, чертеж или схема могут рассматриваться как совокупность графических примитивов: точек, линий, окружностей, дуг и др. Таким образом, для того чтобы на экране появилась нужная картинка, программа должна обеспечить вычерчивание (вывод) графических элементов – примитивов, составляющих эту картинку.
Вычерчивание графических примитивов на поверхности компонента Image (области вывода иллюстрации) осуществляется применением соответствующих методов к свойству Canvas этой поверхности.
Линия
Вычерчивание прямой линии выполняет метод LineTo. Метод рисует линию из той точки, в которой в данный момент находится карандаш (эта точка называется текущей позицией карандаша или просто "текущей"), в точку, координаты которой указаны в инструкции вызова метода. Например, команда
Image1->Canvas->LineTo(100,200);
рисует линию в точку с координатами (100, 200), после чего текущей становится точка с координатами (100, 200).
Начальную точку линии можно задать, переместив карандаш в нужную точку графической поверхности. Сделать это можно при помощи метода MoveTo, указав в качестве параметров координаты точки начала линии. Например, операторы
Image1->Canvas->MoveTo(10,10); // установить карандаш в точку (10,10)
Image1->Canvas->LineTo(50,10); // линия из точки (10,10) в точку (50,10)
рисуют горизонтальную линию из точки (10, 10) в точку (50, 10).
Используя свойство текущей точки, можно нарисовать ломаную линию. Например, операторы
Image1->Canvas->MoveTo(10,10);
Image1->Canvas->LineTo(50,10);
Image1->Canvas->LineTo(10,20);
Image1->Canvas->LineTo(50,20);
рисуют линию, похожую на букву Z.