Основу рисования составляет Canvas: TCanvas, который внедрен во многие компоненты и обеспечивает рисование на них. Вывод графики лучше осуществлять в рамках события OnPaint, присутствующего у многих компонентов.
Для оценкицвета можно использовать канал RBG (Red, Blue, Green), максимальное значение 255, у яркости максимальное 240. При переводе в градации серого используется:
Яркость = 0.6*Зеленый +0.3*Красный +0.1*Синий. Коэффициенты отражают неравномерность чувствительности глаза к разным участкам спектра.
В Uses следует добавить: System. UITypes.
Создать цвет, например, для компонента прямоугольник, можно смешав 3 цвета (A: Byte = $FF – прозрачность до 255):
var
col: TAlphaColorRec;
begin
col. R:= 255;
col. G:= 255;
col. B:= 255;
col. A:= 255;
Rectangle1.Fill.Color:= TAlphaColor (col);
Rectangle1.Fill.Kind:= TBrushKind.Solid;
end;
Для назначения цвета можно использовать вывод его в 16-ричном формате: $FFF000000 соответствует непрозрачному красному цвету; но удобнее и чаще всего используют TAlphaColor, который использует и 16-речные значения и стандартные цвета:
var color: TAlphaColors;
color:= TAlphaColors.Red;//Подсказка выводится после точки
Предусмотрены также ряд специализированных компонентов на вкладке Color: TColorPanel, TComboBoxColorPanel, TColotListBox, TColorComboBox, TColorPicker и др.
Рис. 32. Различные компоненты отображения цвета вкладки Color.
Рисование фигур включает прежде всего описание их свойств внутри BeginScene….EndScene. Так, единственный метод вывода линии ранее:
DrawLine (P1, P2, 1);
теперь превращается в целую историю:
в событии OnPaint основной Form1 подготавливаем сцену:
constant R: TREctF;
var
P1, P2: TPointF;
x1, y1,x2, y2: Integer;
color: TAlphaColor;
Begin
x1:= 10;
y1:= 20;
x2:= 100;
y2:= 200;
P1.X:= x1;
P1.Y:= y1;
P2.X:= x2;
P2.Y:= y2;
with Canvas do
if (Edit1.Text = «1») and (BeginScene) then
try
Stroke.Kind:=TBrushKind.Solid;
Stroke.Color:=TAlphaColors. Blue;
Stroke.Thickness:=2;
Canvas. DrawLine (P1, P2, 1);
finally
endScene;
end;
Для вывода рисунка здесь нужно нажать Button и присвоить Edit1.Text значение «1». При не ограничении вывода рисунок появится прямо при открытии Приложения.
Методы Canvas:
Filll – используемая кисть, имеет множество возможностей;
Stroke – кисть-перо для рисования линий;
Font – для шрифта (Name, Size, Color).
Пример для вывода шрифта:
FillText (RectF (20,30, 200,300), «Текст вывода», true, 1, [], TTextAlign. Center);
Заливка фигур осуществляется методом Fill… для прямоугольника (Rect), эллипса (Ellpise), дуги (Arc), полигональной линии (Polygon) и тректории (Path); полные свойства выводятся автоматически при написании в программе.
При этом Path: TPathData уже не конфликтует с путем для файлов Path: TPath, как это имеет место для Path: TPath группы Shape, однако, рисовать Path: TPathData гораздо менее удобно, чем работать с уже готовыми фигурами Path: TPath.
Для Path: TPathData работают известные методы – перемещение в точку:
MoveTo (const P: TPointF);
и проведение линии от предыдущей точки:
LineTo (const P: TPointF);
Для доступа из любого места программы нужно создать глобальную переменную:
var
Form1: TForm1;
Path: TPathData;
При открытии на OnCreate в Form1 создаем траекторию:
Path:=TpathData.Create;
Подготавливаем сцену для визуализаци в OnPaint и Form1:
with Canvas do
if (Path.Count> 0) and (BeginScene) then
try
Stroke.Kind:=TBrushKind.Solid;
Stroke.Color:=TAlphaColors. Blue;
Stroke.Thickness:=2;
DrawPath (Path,1);
finally
endScene;
end;
Для рисования полилинии на экране, например при движении пальцем, используем метод OnTouch в Form1:
OnTouch в Form1: