Практическая работа по теме Графические возможности языка Lazarus

Раздел Информатика
Класс -
Тип Конспекты
Автор
Дата
Формат docx
Изображения Есть
For-Teacher.ru - все для учителя
Поделитесь с коллегами:

Практическая работа

Тема. Графические возможности языка Lazarus. Организация

рисования. Создаем приложение «Рисовалка».


Цель: познакомиться с особенностями программирования графики в Lazarus.

Теоретическая часть.

Вам уже известны графические возможности языка Паскаль. В языке Lazarus также можно рисовать на разных объектах. Многие компоненты языка Lazarus имеют свойство Canvas (Холст). На этом холсте мы можем рисовать кистью (Brush), пером (Pen), определять шрифт (Font).

Кисть(Brush) предназначена для закрашивания фигур. Она может иметь цвет (Color) и стиль (Style).

Свойство Color определяет цвет кисти.

Свойство Style определяет способ закрашивания. Возможные значения: bsSolid (сплошная кисть), bsHorizontal и bsVertical (горизонтальные и вертикальные полоски соответственно), bsFDiagonal и bsBDiagonal (наклонные вправо или влево полосы соответственно), bsCross (клетка) и другие.

Пример:

Form1.Canvas.Brush.Color:=clBlue; //присвоить кисти синий цвет

Form1.Canvas.Brush.Style:=bsCross;//установить стиль закраски в клетку

Form1.Canvas.Rectangle(80,80,180,150); //нарисовать прямоугольник

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

Результат на рисунке:

Практическая работа по теме Графические возможности языка Lazarus

Перо (Pen) предназначено для рисования различных линий. У него может быть цвет (Color), вид (Style), ширина (Width), режим отображения (Mode).

Свойство Style может принимать значения: psSolid (сплошная линия), psDash (штрих), psDot (пунктир), psDashDot (штрих-пунктир) и другие.

Пример:

Form1.Canvas.Pen.Color:=clRed; //присвоить перу красный цвет

Form1.Canvas.Pen.Style:=psDot; //установить стиль в виде пунктирной линии

Form1.Canvas.Rectangle(80,80,180,150); //нарисовать прямоугольник

Получаем прямоугольник с пунктирной границей красного цвета.

Результат на рисунке:

Практическая работа по теме Графические возможности языка Lazarus

На холсте мы можем нарисовать простейшие геометрические фигуры: точку (Pixels), линию (Line или LineTo), прямоугольник (Rectangle), эллипс (Ellipse), дугу (Arc) и другие. А также можем закрасить замкнутые области с помощью процедуры Floodfill.

Общий вид свойств и методов:

Свойство Pixels[X,Y]: Color - соответствует цвету точки с координатами (X,Y);

Пример: Form1.Canvas.Pixels[60,50]:=clred;//Вывести на форму красную точку.

Методы:

MoveTo(X,Y) - перемещает текущее положение пера в точку (X,Y);

LineTo(X,Y) - проводит линию текущим пером из текущей точки в точку (X,Y);

Line(X1,Y1,X2,Y2) - проводит линию от точки (X1,Y1) до точки (X2,Y2);

Rectangle(X1,Y1, X2,Y2) - рисует прямоугольник с диагональю заданной координатами (X1,Y1) и (X2,Y2);

Ellipse(X1,Y1, X2,Y2) - рисует и закрашивает эллипс, вписанный в прямоугольник (X1,Y1)- (X2,Y2);

Arc(X1,Y1,X2,Y2,XЗ,Y3,X4,Y4) - рисует сегмент эллипса. Эллипс определяется описывающим прямоугольником (X1,Y1)-(X2,Y2). Начальная точка сегмента лежит на пересечении эллипса и луча, проведенного из его центра через точку (X3,Y3). Конечная точка сегмента лежит на пересечении эллипса и луча, проведенного из его центра через точку (X4,Y4). Сегмент рисуется против часовой стрелки;

FloodFill(X, Y, Color, FillStyle); FillStyle = (fsSurface, fsBorder) - производит заливку области текущей кистью. Процесс начинается с точки (X,Y). Если режим FillStyle равен fsSurface, то он продолжается до тех пор, пока есть соседние точки с цветом Color. В режиме fsBorder закрашивание, наоборот, прекращается при выходе на границу с цветом Color;

TextOut(X, Y, Text) - производит вывод строки Text. Левый верхний угол помещается в точку (X,Y).

Определены следующие константы цветов:

clAqua

clBlack

clBlue

clCream

clFuchsia

clGray

clGreen

clLime

clMaroon

clMoneyGreen

Бирюзовый

Черный

Синий

Кремовый

Сиреневый

Серый

Зелёный

Ярко-зелёный

Темно-красный

Зелёные деньги

clNavy

clOlive

clPurple

clRed

clSilver

clSkyBlue

clTeal

clWhite

clYellow

Темно-синий

Оливковый

Фиолетовый

Красный

Серебряный

Голубой

Сине-зелёный

Белый

Жёлтый

Функция RGBToColor(R, G, B: integer): TColor позволяет определить любой цвет.

Пример:

RGBToColor(170,105,70); //определить коричневый цвет.

Практическая часть.

Создайте новый проект. Измените некоторые свойства формы:

Свойство

Значение

Name

FrmDraw

Caption

Рисовалка

Разместите на форме компонент Shape. Найти его можно на вкладке Additional палитры компонентов. Этот компонент позволяет вывести на форму какую-либо фигуру, например прямоугольник, окружность, треугольник и т.д. Как будет выглядеть Shape на форме, это зависит от его свойства Shape. Нам нужно, чтобы он выглядел в виде прямоугольника (rectangle), так как он будет играть роль экрана, на котором мы будем рисовать.

Разместите также на форме кнопку и измените её свойства:

Свойство

Значение

Name

BtnDraw

Caption

Рисовать

Вот что должно получиться:

Практическая работа по теме Графические возможности языка Lazarus

Теперь дважды щёлкните по кнопке Рисовать.

Активизировалась процедура TFrmDraw.BtnDrawClick(Sender: TObject);

Впишите в тело процедуры ниже следующий код.

Пояснение.

1. Вместо записи длинных строк типа:

Shape1.Canvas.Rectangle(80,80,180,150), мы воспользуемся оператором with do, который поможет сократить текст программы;

2. Комментарии, которые отделяются знаком // печатать не нужно.

with Shape1.Canvas do

begin

pen.Color:=clGray; //установить цвет пера

rectangle(80,80,180,150); //рисовать основание дома

rectangle(100,90,120,120); //рисовать окно

rectangle(140,110,170,150); //рисовать дверь

moveto(80,80); //переместиться в точку (80,80)

lineto(130,40);

lineto(180,80); //рисовать крышу

brush.Color:=clBlue; //установить цвет заливки

floodfill(140,90,clGray,fsBorder); //закрасить дом

brush.Color:=clGreen;

floodfill(150,130,clGray,fsBorder); //закрасить дверь

brush.Color:=clAqua;

floodfill(110,100,clGray,fsBorder); //закрасить окно

brush.Color:=clRed;

floodfill(130,60,clGray,fsBorder); //закрасить крышу

brush.Color:=clYellow; //установить цвет заливки

ellipse(30,10,60,40); //рисовать солнце

textout(120,160,'Дом'); //вывести надпись

end;

Практическая работа по теме Графические возможности языка Lazarus

Задание. Придумайте свой рисунок и напишите к нему программу, максимально используя графические возможности языка Lazarus.

Контрольные вопросы:

1. Назовите основное свойство компонентов языка Lazarus, позволяющее рисовать на этих компонентах.

2. Какими инструментами обладает это свойство?

2. Назовите основные графические методы.


© 2010-2022