TCanvasAngleArc (Delphi)

From RAD Studio Code Examples
Jump to: navigation, search

Description

The following example exercises TCanvas.AngleArc and illustrates graphically how the parameters are used in the construction of the arc section.

Code

procedure TForm1.Button1Click(Sender: TObject);
var
  X1, Y1, Radius: Integer;
  StartAngle, SweepAngle: Extended;
  Sin, Cos: Extended;
begin
  X1:= StrToInt(Edit1.Text);
  Y1:= StrToInt(Edit2.Text);
  Radius:= StrToInt(Edit3.Text);
  StartAngle:= StrToFloat(Edit4.Text);
  SweepAngle:= StrToFloat(Edit5.Text);

  Repaint;
  Canvas.Pen.Color := clDefault;
  Canvas.MoveTo(X1-Radius, Y1-Radius); // Bounding box of the circle
  Canvas.LineTo(X1+Radius, Y1-Radius);
  Canvas.LineTo(X1+Radius, Y1+Radius);
  Canvas.LineTo(X1-Radius, Y1+Radius);
  Canvas.LineTo(X1-Radius, Y1-Radius);
  Canvas.MoveTo(X1, Y1);
  SinCos(((StartAngle+SweepAngle)*2*Pi)/360, Sin, Cos);  // Angle has to be radians
  Canvas.LineTo(X1+Round(Radius*Cos), Y1-Round(Radius*Sin)); // Sweep is relative to Start
  Canvas.MoveTo(X1, Y1);
  SinCos((StartAngle*2*Pi)/360, Sin, Cos);
  Canvas.LineTo(X1+Round(Radius*Cos), Y1-Round(Radius*Sin));
  Canvas.Pen.Color := clRed;
  Canvas.AngleArc(X1, Y1, Radius, StartAngle, SweepAngle);
  Canvas.LineTo(300, 300);  // Show where AngleArc left the current position.
end;

Uses