Rysowanie kola

0

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".

0
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.

0

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.

0
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".

0
tovik napisał(a)

Niestety Shape odpada,gdyz jak twierdzi doktorek jest on "zbyt prymitywny".

to nie jest shape :)

0
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

0
Jak mówi reklama Danone napisał(a)

Twój jogurt tego nie potrafi

chyba Jogobelli ;)

0

No może i fakt - niech będzie i tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1