Как нарисовать кривую Безье с помощью 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);
Кстати, этот код не рисует линии напрямую через XY, из-за специфики алгоритма Безье, если вам нужен точный график - спросите меня (или вы можете поискать код javascript, его легко перевести в delphi.).
person
alitrun
schedule
02.04.2018