unit CircleUnit;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Generics.Collections, Vcl.Graphics;
type
TCircle = class
private
FCenter: TPointF;
FRadius: Single;
FCircleThickness: Single;
FOutlineThickness: Single;
FFillColor: TColor;
FOutlineColor: TColor;
FPois: TList<Poi>;
FAngles: TList<Single>;
FNumAssigned: Integer;
public
constructor Create(center: TPointF; radius, circle_thickness, outline_thickness: Single;
fill_color, outline_color: TColor);
destructor Destroy; override;
function ToString: string; override;
procedure Draw(gr: TCanvas);
end;
implementation
constructor TCircle.Create(center: TPointF; radius, circle_thickness, outline_thickness: Single;
fill_color, outline_color: TColor);
begin
FCenter := center;
FRadius := radius;
FCircleThickness := circle_thickness;
FOutlineThickness := outline_thickness;
FFillColor := fill_color;
FOutlineColor := outline_color;
FPois := TList<Poi>.Create;
FAngles := TList<Single>.Create;
FNumAssigned := 0;
end;
destructor TCircle.Destroy;
begin
FPois.Free;
FAngles.Free;
inherited;
end;
function TCircle.ToString: string;
begin
Result := Format('%f, %f', [FCenter.X, FCenter.Y]);
end;
procedure TCircle.Draw(gr: TCanvas);
var
fill_pen: TPen;
outline_pen: TPen;
begin
fill_pen := TPen.Create;
outline_pen := TPen.Create;
try
fill_pen.Color := FFillColor;
fill_pen.Width := Round(FCircleThickness);
outline_pen.Color := FOutlineColor;
outline_pen.Width := Round(FOutlineThickness);
gr.Pen := outline_pen;
gr.Brush.Color := FFillColor;
gr.Ellipse(FCenter.X - FRadius, FCenter.Y - FRadius,
FCenter.X + FRadius, FCenter.Y + FRadius);
finally
fill_pen.Free;
outline_pen.Free;
end;
end;
end.