Как да начертая крива на Безие с помощта на Firemonkey (XE6)? В момента документацията е малко оскъдна в уикито на XE6.
Чертане на крива на Безие с помощта на Firemonkey
Отговори (2)
Следният код може да се използва за начертаване на проста крива на Безие с помощта на Firemonkey XE6. Създайте ново приложение Firemonkey и в манипулатора на Form OnPaint включете кода:
procedure TForm1.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
var path : TPathData;
begin
path := TPathData.Create;
try
path.MoveTo(TPointF.Create (10,100));
path.CurveTo (TPointF.Create(100,10),TPointF.Create(150,150),
TPointF.Create(200,100));
Canvas.Stroke.Thickness := 2;
Canvas.Stroke.Color := claRed;
Canvas.BeginScene;
Canvas.DrawPath(path, 1.0);
Canvas.EndScene;
finally
path.Free;
end;
end;
CurveTo приема три аргумента, двете контролни точки на Безие и крайната точка. MoveTo осигурява началната точка.
person
rhody
schedule
16.07.2014
Фиксиран код за нови версии:
procedure TForm2.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
var path : TPathData;
begin
path := TPathData.Create;
try
path.MoveTo(TPointF.Create (10,100));
path.CurveTo (TPointF.Create(100,10),TPointF.Create(150,150),
TPointF.Create(200,100));
Canvas.Stroke.Thickness := 2;
Canvas.Stroke.Kind := TBrushKind.Solid;
Canvas.Stroke.Color := TAlphaColorRec.Red;
Canvas.BeginScene;
Canvas.DrawPath(path, 1.0);
Canvas.EndScene;
finally
path.Free;
end;
end;
Ако трябва да начертаете най-простата 3-точкова крива:
path.MoveTo(Point1);
CurveTo (Point2, Point2, Point3);
Btw този код не чертае линии директно през XY, поради спецификата на алгоритъма на Bezier, ако имате нужда от точна графика - попитайте ме (или можете да потърсите javascript код, лесно е да го преведете на delphi.).
person
alitrun
schedule
02.04.2018