Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Графика С++.doc
Скачиваний:
3
Добавлен:
28.08.2019
Размер:
902.66 Кб
Скачать

Карандаш и кисть

Методы вычерчивания графических примитивов обеспечивают только вычерчивание. Вид графического элемента определяют свойства Реп (карандаш) и 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.