Witam.Mam taki problem. Moj program musi rysowac kolo o sredniczy zaleznej od podanych parametrow. Ma ktos jakis pomysl jak to zrobic w petli? Niestety Shape odpada,gdyz jak twierdzi doktorek jest on "zbyt prymitywny".
procedure Kolo(Canvas:TCanvas; x,y,r:integer);
var d:integer;
begin
Canvas.MoveTo(x, y+r);
for d:=0 to 360 do
Canvas.LineTo(round(x+sin(d*PI/180)*r), round(y+cos(d*PI/180)*r));
end;
Przykładowe wywołanie:
Kolo(Form1.Canvas, x_srodka, y_srodka, srednica div 2);
Tak na prawdę to jest to 360-kąt, a nie koło, ale w zupełności wystarczy.
Szczawik Ty sobie jaja robisz, prawda?
Ellipse method (TCanvas)
Draws the ellipse defined by a bounding rectangle on the canvas.
Delphi syntax:
procedure Ellipse(X1, Y1, X2, Y2: Integer); overload;
procedure Ellipse(const Rect: TRect); overload;Description
Call Ellipse to draw a circle or ellipse on the canvas. Specify the bounding rectangle either by giving
The top left point at pixel coordinates (X1, Y1) and the bottom right point at (X2, Y2).
A TRect value.If the bounding rectangle is a square, a circle is drawn.
The ellipse is outlined using the value of Pen, and filled using the value of Brush.Note: On Windows 9x or Windows ME, the sums X1 + X2 and Y1 + Y2 cannot exceed 32768. Also, the sum X1 + X2 + Y1 + Y2 cannot exceed 32768.
tovik napisał(a)
Witam.Mam taki problem. Moj program musi rysowac kolo o sredniczy zaleznej od podanych parametrow. Ma ktos jakis pomysl jak to zrobic w petli? Niestety Shape odpada,gdyz jak twierdzi doktorek jest on "zbyt prymitywny".
tovik napisał(a)
Niestety Shape odpada,gdyz jak twierdzi doktorek jest on "zbyt prymitywny".
to nie jest shape :)
procedure Kolo(Canvas:TCanvas; x,y,r:integer);
var d:integer;
c:byte;
begin
Canvas.MoveTo(x, y+r);
for d:=0 to 360 do
begin
c:=round(sin(d*PI/360)*255);
Canvas.Pen.Color:=RGB(255-c, 0, c);
Canvas.LineTo(round(x+sin(d*PI/180)*r), round(y+cos(d*PI/180)*r));
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
Kolo(Canvas, 200, 200, 120)
end;
Zrób to za pomocą Ellipse :)
Jak mówi reklama Danone napisał(a)
Twój jogurt tego nie potrafi
Jak mówi reklama Danone napisał(a)
Twój jogurt tego nie potrafi
chyba Jogobelli ;)
No może i fakt - niech będzie i tak.