Moving on from the distraction

I'm looking at the drawing primitives and keep being stymied by the fact that there isn't a 'Circle' which takes the arguments CentreX, CentreY and Diameter.
I appreciate that the bounding box Ellipse(X1,Y1,X2,Y2) is probably more flexible since it doesn't care if the 'ellipse' is the special case of a circle but it would be nice to call Circle(X,Y,D).
To address this I've considered a procedure (
which could even pass line_width, line_colour & fill_colour but lets not get ahead of ourselves!) but can't see a way to make it independent from an 'OnPaint' event.
I know the following code fragment isn't complete but I hope it better explains what I'm looking to do
implementation
uses
Math;
{$R *.lfm}
procedure Circle(X,Y,D : Integer);
const
S45 : single = sin(pi/4);
var
X1,X2,Y1,Y2 : integer;
Rad : single;
dX : single;
begin
Rad := D / 2;
dX := Rad * S45;
X1 := round(X-dX);
X2 := round(X+dX);
Y1 := round(Y-dX);
Y2 := round(Y+dX);
end;
procedure TForm1.PaperPaint(Sender: TObject);
begin
Paper.Canvas.Ellipse(X1,Y1,X2,Y2);
end;
It may be that 'Circle' should be a Function rather than a Procedure but it may also be that I have to have it as a sub-procedure within the OnPaint event - which defeats the 'independent' issue.
I'd appreciate the opinion of anyone 'in the know' !