Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
40
Добавлен:
16.04.2013
Размер:
1.46 Mб
Скачать

Л а б о р а т о р н а я р а б о т а N 4

Использование графических возможностей системы Delphi

Цель pаботы: научиться составлять программы с использованием графических свойств и методов компонентов в системе Delphi.

Продолжительность работы - 4 ч.

Теоретические сведения

И

Рис.1. Канва формы, ширина и высота формы

Form1.Canvas

спользуемые в программе визуальные компоненты, т.е. компоненты, видимые на экране в момент выпонения программы, как правило, имеют свойство Canvas (в переводе с англ. - холст, полотно, канва), которое представляет собой область для вывода растровых изображений, заданных набором светящихся точек, называемых пикселями. В частности, связанная с программой форма, отображаемая на экране и содержащая те или иные компоненты (кнопки, списки, строки редактирования и т.п.), имеет такую область, которая располагается под заголовком формы и занимают всю видимую часть формы.Ширина и высота этой области, которую далее будем называть канвой, хранятся в свойствах ClientWidth и ClientHeight формы (рис.1). Цвет канвы хранится в свойствеColor формы.

П

Form1.ClientWidth

оложение пикселей на канве задается в системе координат, начало которой находится в верхнем левом углу канвы (рис.2).

X

(0,0)

1

2

3

4

5

6

7

8

1

2

(4,3)

3

4

5

Y

Рис.2. Система координат канвы

Канва, будучи свойством Canvasформы, является в то же время объектом типаTCanvas, у которого есть свои свойства и методы, перечисленные в табл. 1 и 2.

Таблица 1

Свойства канвы

Свойство

Пояснение

Pixels

Массив цветов пикселей

Pen

Перо для рисования линий

PenPos

Текущая позиция пера

Brush

Кисть для закрашивания замкнутых участков канвы

Font

Шрифт, которым выводится текст

Таблица 2

Методы канвы

Метод

Действие

Arc

Рисует пером дугу окружности или эллипса

Chord

Рисует пером замкнутую фигуру, ограниченную дугой окружности или эллипса и хордой, и закрашивает ее кистью

Ellipse

Рисует пером окружность или эллипс и закрашивает кистью

Pie

Рисует пером сектор окружности или эллипса и закрашивает кистью

Polygon

Рисует пером многоугольник и закрашивает кистью

Polyline

Рисует пером кусочно-линейную кривую

Rectangle

Рисует пером прямоугольник и закрашивает его кистью

RoundRect

Рисует пером прямоугольник со скругленными углами и закрашивает его кистью

FillRect

Закрашивает кистью прямоугольную область канвы

FloodFill

Закрашивает кистью замкнутую область канвы, определенную цветом

FrameRect

Рисует кистью на канве прямоугольную рамку, не закрашивая ее внутреннюю часть (толщина рамки - 1 пиксель)

MoveTo

Перемещает перо в заданную позицию, ничего не рисуя

LineTo

Рисует пером на канве прямую линию, начинающуюся с текущей позиции пера и кончающуюся указанной точкой

TextOut

Пишет указанную строку текста на канве, начиная с указанной позиции

TextRect

Пишет указанную строку текста на канве, начиная с указанной позиции и усекая текст, выходящий за пределы указанной прямоугольной области

Информация о цвете пикселей, заполняющих канву, хранится в свойстве Pixels, которое является двумерным массивом. Каждый элемент этого типа соответствует одному пикселю канвы и имеет типTcolor.Значение этого типа обозначает цвет, кодируемый 4-байтовым 16-ичным числом, три младшие пары разрядов которого задают интенсивность синего, зеленого и красного цвета соответственно, например: $00FF0000 - синий, $0000FF00 - зеленый, $000000FF - красный, $00000000 - черный, $00FFFFFF - белый. Для обозначения некоторых цветов предусмотрены стандартные константы, приведенные в табл.3.

Таблица 3

Константы, обозначающие цвета

Константа

Цвет

clBlack

Черный

clMaroon

Темно-бордовый

clGreen

Зеленый

clOlive

Оливково-зеленый

clNavy

Темно-синий

clPurple

Пурпурный

clTeal

Морской воды

clGray

Серый

clSilver

Серебряный

clRed

Красный

clLime

Лимонно-зеленый

clBlue

Синий

clYellow

Желтый

clFuchsia

Сиреневый

clAqua

Голубой

clWhite

Белый

Например, оператор Form1.Canvas.Pixels[4,3]:=clRed окрашивает пиксельс координатами (4,3) в красный цвет.

Перо (Pen) имеет такие свойства, какColor - цвет, которым наносится рисунок; Width - ширина рисуемой линии (задается числом пикселей); Style - вид рисуемой линии. Значение свойстваStyleзадается одной из констант, перечисленных в табл.4.

Таблица 4

Вид линий (Style)

Обозначение

Пояснение

Шаблон

psSolid

Сплошная линия

psDash

Штриховая линия

psDot

Пунктирная линия

-------------------

psDashDot

Штрих-пунктирная линия

- - -

psDashDotDot

Линия, чередующая штрих и два пунктира

-- -- --

psClear

Отсутствие линии

psInsideFrame

Сплошная линия, но при Width > 1 принимающая цвета, отличные от палитры ОС Windows

Все стили со штрихами и пунктирами доступны только при Width = 1. В противном случае линии этих стилей рисуются как сплошные.

Стиль psInsideFrame - единственный, который допускает произвольные цвета. Цвет линии при остальных стилях округляется до ближайшего из палитры ОС Windows.

Например, чтобы перо могло рисовать синиелинии шириной 5, нужно задать свойствам пера следующие значения, воспользовавшись оператором присоединения:

with Form1.Canvas.Pen do

begin

Color := clBlue;

Style := psSolid;

Width := 5;

end;

Кисть (Brush) среди прочих свойств имеет свойстваColor, определяющее цвет закрашиваемого участка, и Style, задающее шаблон штриховкизакрашиваемого участка. Шаблоны обозначаются константами, перечисленными в табл.5.

Таблица 5

Шаблоны штриховки (Style)

Обозначение

Штриховка

bsSolid

Сплошная

bsClear

Отсутствует

bsBDiagonal

Правая диагональная

bsFDiagonal

Левая диагональная

bsCross

Прямая клетка

bsDiagCross

Диагональная клетка

bsHorizontal

Горизонтальная

bsVertical

Вертикальная

Например, чтобы участок закрашивался сплошным зеленым цветом, нужно задать следующие значения свойствкисти:

with Form1.Canvas.Brush do

begin

Color := clGreen;

Style := bsSolid;

end;

Шрифт (Font), которым выводится текст, характеризуется следующими свойствами: Color - цвет текста; Name - имя шрифта; Size - размер шрифта; Style- стиль шрифта (fsBold - полужирный; fsItalic - курсив; fsUnderline - подчеркивание). Например, чтобы текст выводился полужирным курсивом и был голубого цвета, нужно задать следующие значения свойствшрифта:

with form1.Canvas.Font do

begin

Style := [fsBold,fsItalic];

Color := clAqua;

Size := 10;

Name := 'Times New Roman';

end;

Методы канвы, перечисленные в табл.2, вычерчивают на канве линии и фигуры, а также позволяют выводить текст с учетом заданного шрифта. Представленное на рис.3 изображение получено с помощью следующих операторов:

with Form1.Canvas do

begin

Font.Style:=[fsBold];

Arc(10,10,90,90,90,50,10,50);

TextOut(40,60,'Arc');

Chord(110,10,190,90,190,50,110,50);

TextOut(135,60,'Chord');

Ellipse(210,10,290,50);

TextOut(230,60,'Ellipse');

Pie(310,10,390,90,390,30,310,30);

TextOut(340,60,'Pie');

PolyGon([Point(30,150),Point(40,130),Point(50,140),

Point(60,130),Point(70,150)]);

TextOut(30,170,'PolyGon');

PolyLine([Point(130,150),Point(140,130),Point(150,140),

Point(160,130),Point(170,150)]);

TextOut(130,170,'PolyLine');

Rectangle(230,120,280,160);

TextOut(230,170,'Rectangle');

RoundRect(330,120,380,160,20,20);

TextOut(325,170,'RoundRect');

end;

Соседние файлы в папке ВМИП