logo
Курсовые / Лабораторная работа20-25

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

Рассмотренные методы обеспечивают только вычерчивание примитивов. Они не определяют толщину линии, цвет и другие свойства. Вид графического элемента определяют свойства Реn(карандаш) и Brush (кисть) той поверхности (Canvas), на которой рисует метод. Карандаш и кисть, являясь свойствами объекта Canvas, в свою очередь представляют собой объекты Реn и Brush. Свойства объекта Реn (табл. 22.2) задают цвет, толщину и тип линии или границы геометрической фигуры. Свойства объекта Brush (табл. 22.3) задают цвет и способ закраски области внутри прямоугольника, круга, сектора или замкнутого контура.

Таблица 22.2. Свойства объекта Реn (карандаш)

Свойство

Определяет

Color

Цвет линии

Width

Толщину линии (задается в пикселах)

Style

Вид линии:

psSolid - сплошная;

psDash - пунктирная, длинные штрихи;

psDot - пунктирная, короткие штрихи;

psDashDot - пунктирная, чередование длинного и короткого штрихов;

psDashDotDot - пунктирная, чередование одного длинного и двух коротких штрихов;

psClear - линия не отображается (используется, если не надо изображать границу области - например, прямоугольника)

Таблица 22.3. Свойства объекта Brush (кисть)

Свойство

Определяет

Color

Цвет закрашивания замкнутой области

Style

Стиль заполнения области:

bsSolid - сплошная заливка.

Штриховка:

bsHorizontal - горизонтальная;

bsVertical - вертикальная;

bsFDiagonal - диагональная с наклоном линий вперед;

bsBDiagonal - диагональная с наклоном линий назад;

bsCross - в клетку;

bsDiagCross - диагональная клетка

Ниже приведена функция обработки события onPaint, которая рисует на поверхности формы олимпийский флаг.

Листинг 22.2.

//олимпийский флаг

void__fastcall TForml::FormPaint(TObject *Sender)

{

// полотнище флага

Canvas->Pen->Width = 1;

Canvas->Pen->Color = clBlack;

Canvas->Brush->Color = clCream;

Canvas->Rectangle(30,30,150,150);

Canvas->Pen->Width =2; // ширина колец

Canvas->Brush->Style=bsClear; /* чтобы круг,

нарисованный методом Ellipse, не был закрашен

рисуем кольца */

Canvas->Pen->Color = clBlue;

Canvas->Ellipse(40,40,80,80) ;

Canvas->Pen->Color = clBlack;

Canvas->Ellipse(70,40,110,80);

Canvas->Pen->Color = clRed;

Canvas->Ellipse(100,40,140,80);

Canvas->Pen->Color = clYellow;

Canvas->Ellipse(55,65,95,105);

Canvas->Pen->Color = clGreen;

Canvas->Ellipse(85,65,125,105);

}

Задание2.

Создайте программу, которая вычерчивает график функции y=sinx путем соединения отрезками прямой соседних точек. Если количество таких точек достаточно велико, то изломы становятся незаметными.