Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа20-25.doc
Скачиваний:
9
Добавлен:
31.08.2019
Размер:
2 Mб
Скачать

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

Рассмотренные методы обеспечивают только вычерчивание примитивов. Они не определяют толщину линии, цвет и другие свойства. Вид графического элемента определяют свойства Ре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 путем соединения отрезками прямой соседних точек. Если количество таких точек достаточно велико, то изломы становятся незаметными.

Графические примитивы

Любая картинка, чертеж или схема могут рассматриваться как совокупность графических примитивов: точек, линий, окружностей, дуг и др. Карандаш и кисть дают существенное величение возможностей для рисования примитивов.

Линия

Вычерчивание прямой линии выполняет метод LineTo. Метод рисует линию из той точки, в которой в данный момент находится карандаш (эта точка называется текущей позицией карандаша или просто "текущей"), в точку, координаты которой указаны в инструкции вызова метода. Например, оператор

Canvas->LineTo(100,200)

рисует линию в точку с координатами (100, 200), после чего текущей становится точка с координатами (100, 200).

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

Canvas->MoveTo(10,10); // установить карандаш в точку (10,10)

Canvas->LineTo(50,10); // линия из точки (10,10)в точку (50,10)

рисуют горизонтальную линию из точки (10, 10) в точку (50, 10). Используя свойство текущей точки, можно нарисовать ломаную линию. Например, операторы

Canvas->MoveTo(10,10) ;

Canvas->LineTo(50,10) ;

Canvas->LineTo(10,20) ;

Canvas->LineTo(50,20) ;

рисуют линию, похожую на букву Z.