HiHo.
Ich habe ein kleines Schleifenproblem, da ich noch nciht so viel erfahrung im Programmieren von schleifen in verbingung mit canvas habe. Mein Problem ist, dass ich ein komplettes image mit kreisen vollmalen will. sie sollen damit genau nebeneinander und untereinander liegen. Ich bekomm es aber nur hin, dass die oberste reihe kreise gemalt wird und die erste senkrechte. Ich hoffe irgendwer hat eine schnelle und einfache Lösung. Ich möchte es übrigens nur mit while Schleifen machen, da sonst mein INFO lehrer böse ist.
(P.S. ich habe eine Klasse für die Kreise = Bälle erstellt)
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 =
class(TForm)
ImageBall: TImage;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TBall =
class
Farbe :TColor;
Radius :integer;
OrtX :integer;
OrtY :integer;
private
procedure initialisieren;
procedure zeichnen;
end;
var
Form1: TForm1;
Ball: TBall;
implementation
{$R *.DFM}
procedure TBall.initialisieren;
begin
Farbe := clred;
Radius := 10;
OrtX := -10;
OrtY := 10;
end;
procedure TBall.zeichnen;
begin
Form1.ImageBall.canvas.brush.color := Farbe;
Form1.ImageBall.canvas.ellipse(OrtX -Radius, OrtY-Radius, OrtX+Radius, OrtY+Radius);
end;
{################################}
procedure TForm1.FormCreate(Sender: TObject);
begin
Ball := TBall.create;
Ball.initialisieren;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with Ball
do
begin
while OrtX < Form1.ImageBall.width
do
begin
OrtX := ORtX + 2*Radius;
zeichnen;
end;
OrtX := Radius;
while OrtY < Form1.ImageBall.height
do
begin
OrtY := ORtY + 2*Radius;
zeichnen;
end;
end;
end;
end.