Дягилев. С Дягилевым - страница 23



, позволяющего рисовать полилинии:

Вначале определяется глобальная переменная Path:

var

Form1: TForm1;

Path: TPathData;

Затем при открытии формы создается траектория Path:

procedure TForm1.FormCreate (Sender: TObject);

begin

Path:= TPathData.Create; //Создаем траекторию

end;


Определяется событие OnPaint для Image (или для Form1):

procedure TForm1.Image1Paint (Sender: TObject; Canvas: TCanvas; const ARect: TRectF);

begin

with Canvas do

if (Path.Count> 0) and (BeginScene) then

try

Clear (TAlphaColorRec. White);

Stroke.Kind:= TBrushKind.Solid;

Stroke.Thickness:= 1;

DrawPath (Path,1); //Рисовать Path при обращении

finally

EndScene;

end;


Собственно рисуем линию на Image по щелчку на кнопке:

procedure TForm1.Button1Click (Sender: TObject);

var

p,p1:TPointF;

begin

p.X:= Image1.Position. X;

p.Y:= Image1.Position. Y;

Path.Clear; // Очистить Path

Path.MoveTo (p1); // Начальная точка рисования

p1.X:= Image1.Position. X+100;

p1.Y:= Image1.Position. Y+150;

Path.LineTo (p1); // Линия от начальной точки

Path.ClosePath; // Оконачание создания Path

// Вывод созданной Path в Image

Image1.OnPaint(Sender,Image1.Canvas,Image1.ClipRect);

end;


Для добавления элементов используют Path1.Data.Add

(или: Image1.AddObject (TEllipse)):

for i:= 0 to Memo1.Lines.Count – 1 do

begin

X:=X+5; // X с шагом = 5 точек

R.Top:=Path1.Height – StrToInt(Memo1.Lines [i]) // Y

R.Bottom:=R.Top +3; // Диаметр кружка: 1+3=4

R. Left:= X;

R. Right:=R. Left +3;

Path1.Data.AddEllipse (R); //Рисуем кружок

end;

Как видите, рисование в Android не доставляет того же удовольствия, как в Delphi 7. Поэтому гораздо проще использовать фигуры из группы Shape, которые не требует ничего этого и свойства которых можно определять в Object Inspector.

11.4. РИСОВАНИЕ СРЕДСТВАМИ DELPHI ANDROID

Основной класс для для графики в Delphi Android – TCanvas (т.н. «холст») модуля FMX.Graphics. В отличие от обычного Delphi рисование средствами Delphi Android, в результате попыток создания мультиплатформенности, оказывается резко усложнено и вначале может вообще ничего не получиться с выводом рисунка на экран, а в особенности с динамическим выводом данных, хотя для последнего существует специальный компонент для вывода графиков TChart.

Основу рисования составляет 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;//Подсказка выводится после точки

Предусмотрены также ряд специализированных компонентов на вкладке