Тема. Графический режим Сanvas. Firemonkey 3D Application.




Система координат формы и представление на них объектов => Холст для рисования Canvas, представляет собой перевернутую систему координат XOY, где О эта верхняя левая точка компонента или формы (смотря где мы рисуем).

 

 

I. Canvas

Canvas обеспечивает пространство (холст, канву) для создания, хранения и модификации графических объектов. Canvas является основой графической подсистемы Delphi. Канва обеспечивает:

Ø Загрузку и хранение графических изображений

Ø Создание новых и изменение хранимых изображений с помощью пера, кисти, шрифта

Ø Рисование и закраску различных фигур, линий, текстов

Ø Комбинирование различных изображений

 

Основное свойство такого объекта как Canvas Delphi - Pixels[i, j] типа TColor, то есть это двумерный массив точек (пикселов), задаваемых своим цветом. Рисование на канве происходит в момент присвоения какой-либо точке канвы заданного цвета. Каждому пикселу может быть присвоен любой доступный для Windows цвет. Например, выполнение оператора

Image1.Canvas.Pixels[100, 100]:=clRed;

приведёт к рисованию красной точки с координатами [100, 100].

Узнать цвет пиксела можно обратным присвоением:

Color:=Image1.Canvas.Pixels[100, 100];

Тип TColor определён как длинное целое (LongInt). Его четыре байта содержат информацию о долях синего (B), зелёного (G), и красного (R) цветов. В 16-ричной системе это выглядит так: $00BBGGRR. Доля каждого цвета может меняться от 0 до 255. Поэтому чтобы отобразить максимально красную точку, ей нужно присвоить цвет $000000FF. Для стандартных цветов в Delphi определён набор текстовых констант. Увидеть его можно, открыв в Инспекторе Объектов свойство Color, например, той же Формы.

Следующая таблица содержит методы канвы:

Arc(x1,y1,x2,y2,x3,y3,x4,y4: Integer) Метод Arc рисует дугу окружности или эллипса с помощью текущих параметров пера Pen (эти параметры мы рассмотрим чуть ниже). Точки (x1,y1) и (x2,y2) определяют прямоугольник, описывающий эллипс. Начальная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (x3,y3). Конечная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (x4,y4). Дуга рисуется против часовой стрелки от начальной до конечной точки. Пример 1 Image1.Canvas.Arc(0,0, 200,200, 200,0, 0,0); Image2.Canvas.Arc(0,0, 200,200, 0,0, 200,0);
Ellipse (x1,y1,x2,y2:Integer); Метод Ellipse рисует окружность или эллипс с помощью текущих параметров пера Pen. Фигура заполняется текущим значением Brush. Точки (x1,y1) и (x2,y2) определяют прямоугольник, описывающий эллипс. Пример 2 With Image1.Canvas do //в операторных скобках перед каждой строкой добавляет Image1.Canvas. Begin Brush.Color:= clRed; Brush.Style:= bsDiagCross; Ellipse(0, 0, Image1.Width, Image1.Height); end;
LineTo (x,y:Integer); Метод LineTo рисует на канве прямую линию, начинающуюся с текущей позиции пера PenPos и кончающуюся точкой (x,y). Текущая позиция пера PenPos перемещается и кончающуюся точкой (x,y), исключая саму точку (x,y). Текущая позиция пера PenPos перемещается в точку (x,y). При рисовании используются текущие установки пера Pen. Пример 3 Form1.Canvas.MoveTo(x1,y1); Form1.Canvas.LineTo(x2,y2); Form1.Canvas.LineTo(x3,y3);
MoveTo(x,y:Integer); Метод MoveTo изменяет текущую позицию пера на заданную точкой (x,y). Это эквивалентно непосредственной установке свойства PenPos. При перемещении пера методом MoveTo ничего не рисуется.
Polygon (Points: array of TPoint); Метод Polygon рисует на канве замкнутую фигуру (полигон, многоугольник) по множеству угловых точек, заданному массивом Points. Первая из указанных точек соединяется прямой с последней. Этим метод Polygon отличается от метода Polyline, который не замыкает конечные точки. Рисование проводится текущим пером Pen. Внутренняя область фигуры закрашивается текущей кистью Brush. Пример 4 Form1.Canvas.Polygon([Point(10,10),Point(30,10),Point(130,30),Point(240, 120)]);
Rectangle(x1,y1,x2,y2:Integer); Метод Rectangle рисует на канве текущим пером Pen прямоугольник, верхний левый угол которого имеет координаты (x1,y1), а нижний правый — (x2,y2). Прямоугольник закрашивается текущей кистью Brush. Рисование прямоугольника без рамки можно осуществить методом FillRect. Прямоугольник со скругленными углами рисуется методом RoundRect. Прямоугольникбез внутренней закраски рисуется методом FrameRect. Пример 5 Image1.Canvas.Rectangle(10,10,210,110);

 

 

Следующая таблица содержит свойства канвы:

 

Brush: TBrush; Атрибуты объекта Brush можно изменять, используя свойства Color и Style. Свойство Color определяет цвет фона компонента. Значение цвета может задаваться как значение, определяющее интенсивности красного, зеленого и синего цветов в формате RGB (Например: Form1.Canvas.Brush.Color:= RGB (88, 87, 104)) или равным одной из предопределенных в Delphi констант.
Style: TBrushStyle; Свойство Style определяет шаблон, которым кисть заполняет фон объекта.
Pen Определяет свойства пера, используемые при рисовании линий и фигур на канве. Основные свойста: Color — цвет пера. По умолчанию clBlack. Style — определяет режимрисования линий. Width — определяет толщину линии в пикселях. Тип Integer. Влияет на Style.

 

Задание 1. Нарисовать ель. Создайте новый проект, сохраните проект в новой папке, выберите событие OnPaint компонента Form1. Напишите заданный фрагмент программы внутри процедуры. 15 мин

 

Procedure TForm1.FormPaint(Sender: TObject);

Begin

With Form1.Canvas do // к каждой последующей строке добавлять Form1.Canvas.

Begin

Pen.Width:=1; //установка полщины пера

Pen.Color:=clGreen; //установка цвета пера

Brush.Color:=clGreen; //установка цвета заливки

{Рисование елки}

PolyGon([Point(350,90),Point(330,90),Point(400,160),Point(380,160),

Point(470,250),Point(130,250),Point(220,160),Point(200,160),

Point(270,90),Point(250,90),Point(300,40)]);

Pen.Color:=RGB(128,64,0); //установка цвета пера (оттенок коричневого)

Brush.Color:=RGB(128,64,0); //установка цвета заливки (оттенок коричневого)

{Рисование ствола}

PolyGon([Point(350,251),Point(350,301),Point(250,301),Point(250,251)]);

End;



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-04 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: