Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi kreise ineinander zeichnen (https://www.delphipraxis.net/32129-kreise-ineinander-zeichnen.html)

Christian18 19. Okt 2004 09:51


kreise ineinander zeichnen
 
Hallo,

ich will einen Kreis zeichnen und in diesen Kreis sind auch kreise im gleichen abstand zueinander. Die anzahl der Kreise soll in einer Variablen festgehalten werden. wie mache ich das??? Ich hatte mit zwei schleifen gedacht. funktioniert aber leider nicht. hier mal mein code der funktioniert

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var i : TImage;
      r : Integer;
      mx : Integer;
      my : Integer;
      k : Integer;
begin
  i:=Image1;
  mx:=i.Width div 2;
  my:=i.Height div 2;

  if i.Height<i.Width then r:=i.Height div 2 - 10 else r:=i.Width div 2 - 10;

  i.Canvas.MoveTo(mx+r, my);

  for k:=0 to 360 do
    begin
      i.Canvas.LineTo(Round(mx+r*cos(k*Pi/180)), Round(my-r*sin(k*Pi/180)));
    end;
end;

Stevie 19. Okt 2004 13:30

Re: kreise ineinander zeichnen
 
Hi,
versuch mal das hier:
Delphi-Quellcode:
var
  k : Integer;
  rect: TRect;
  max, step: Integer;
begin
  rect := Image1.Canvas.ClipRect;
  if Rect.Right > Rect.Bottom then
  begin
    Rect.Top := (Rect.Right - Rect.Bottom) div 2;
    Rect.Bottom := Rect.Bottom - Rect.Top;
  end
  else
  begin
    Rect.Left := (Rect.Bottom - Rect.Right) div 2;
    Rect.Right := Rect.Right - Rect.Left;
  end;

  max := 4;
  step := (rect.Right div 2) div (max + 1);

  for k := 1 to max do
    Image1.Canvas.Ellipse(Rect.Left + k * step,
      Rect.Top + k * step,
      Rect.Right - k * step,
      Rect.Bottom - k * step);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz