Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Программирование!!!.docx
Скачиваний:
18
Добавлен:
04.04.2018
Размер:
219.34 Кб
Скачать

Графика в Делфи

Растровый способ формирования изображение. Т.е. любая информация представляет собой совокупность светящихся точек – пикселей. Каждый пиксель определен координатами левого угла экрана (0:0) и цветом.

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

Все графические операции сводятся к установке к цвету пикселей на площадке рисунка. Делфи может манипулировать каждым отдельным пикселем.

Каждый цвет определяется конкретным битовым набором 24-х бит. Вся палитра определяется количеством уникальным битовым набором 28=256 224= 16 000 000

Манипулируя палитрой добиваемся нужного цвета

II способ манипулирования основам на понятии истинного цвета, который определяется как 16 млн цветов, полученных совместным сложением всех комбинаций красного, зеленого и синего.

Интенсивность от 0 до 255

2563=16 777 216 При таком подходе исходный цвет определяется от черный белый 0 до 255 R G B 0 0 0 255 255 255

Есть функция RGB с помощью которой можно устанавливать цвет RGB(значение красного, значение зеленого, значение синего)

For,1.Color:=RGB(255,255,255) 255,255,0 желтый 255,0,255 фиолетовый

Можно использовать сложение цветов или комбинации Form1.Color:=7+14; РезультатЖ цвет полученный по битовому сложению 1 1 1 1 0 1 1 1 1

В делфи созданы специальные классы подстройки, упрощеное использование графиков их инструментов (шрифт, перо и кисть) Классы

TCanvas контекст TFont шрифт TPen перо TBrush кисть

Объекты этих классов доступны программисту через свойства.

Класс tCanvas

Область рисунка на форме и другого графического компонента.

Свойство класса TCanvas: property BrushTBrush; property ClipRect:TRect; определяет текущие размеры области нуждающиеся в прорисовке

Property Font:TFont; property Pen:TPen; property PenPos:TPoint; Определяет текущее положение пара в пикселях относительно левого угла конвы графика объекта property Copymode:TCopemode;

Устанавливает способ взаимодействия растрового изображения с цветом фона property Pixels [x,y:integer]:TColor; Чтобы получить доступ к пикселям формы используем свойство формы pixels для canvas. [Form1.Canvas.Pixels[10..10]:=0;

Пр. Используя свойства Pixels нарисовать синусоиду на конве формы

Procedure TForm1.Button1Click (Sender:TObject); var x,y:real; PX,PY:integer; Halfh:integer; begin Halfh:=Form1.Height div 2; For PX:=0 to Form1.Width do begin x:=PX*(2*pi/form1.Width); //масштаб х приводим к 2pi для прорисовки одной волны y:=sin(x); PY:=trunk(0.7*y*halfh)+halfh; Form1.Canvas.Pixels[PX,PY]:=0; end; end. Свойство CopyMode при копировании методом CopyRect; сm MergePaint | And (режим объединения изображения на canvas и копируемое изображение операцией and cm MergeCopy| or cmSrcCopy |

Метод класса tCanvas

Procedure Lineto (x,y:integer); чертит линию от текущего положения пера до координат x,y Procedure Moveto (x,y:integer); без вычерчивания , практически переносит курсор Procedure PolyLine(points:array of TPaint); вычерчивает ломаную по точкам заданым в массива Paints Procedure PolyGone(…); замкнутый многоугольник с заполнением кистью Procedure FloodFill (x,y:integer; Color:TColor; FillStyle:TFillStyle); заливка конвы текущей кистью, начинается с точки (х,у) во все стороны. Если равен FillStyle=fsSurface, то заливка распространяется до точек и этим цветом Color.

Style=fsBorder (до бордюра с цветом)

Procedure TextOut(x,y:integer; const s:string); Выводит текстовую строку S начиная с х,у на канве Form1.Canvas.PolyLine )Point(10,10),Point(100,100),Ponit(50,75),Point(10,10));

Пр. Написать пр. заполнения окна цветом с помощью цикла по всем меняемым в окне.

Var x:integer; begin for x:=0 to Form1.Width do begin Form1.Canvas.Moveto(x,0); Form1.Canvas.Lineto(x,Fomr1.height); end;