Hallo liebe Forengemeinde,
Ich habe ein Problem, dass ich rein gar nicht verstehe, ich soll für die Schule eine Pyramide zeichnen, in der sich immer kleiner werdende andere Pyramiden schachteln mit Hilfe von Variablen zeichnen. Ich bin leider nicht weit gekommen, denn bei dem Eintrag
LineTo (PenPos.X+ Round((Breite-BZ)/2), PenPos.Y-(Breite-BZ));
In einer while Schleife stürzt das Programm ab, nachdem ich den Button zum Zeichnen gedrückt habe, d.h. es reagiert nicht mehr, zeichnet aber auch nicht. Ich kann es nur über Run-->Program Reset schließen, komischerweise läuft das Programm, wenn ich das geteilt durch 2 und den Round Befehl weg lasse, aber dann zeichnet es ja nicht richtig. ICh bin ziemlicher Anfänger, vlt. ist einfach irgendwo ein Fehler, den ich nicht sehe, ich hoffe mal ihr könnt mir das erklären
Hier der restliche Programm Text:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 =
class(TForm)
ImZeichnen: TImage;
Zeichnen: TButton;
procedure ZeichnenClick(Sender: TObject);
private
{ Private declarations }
procedure DreieckZeichnen (Ebenen: Integer; Breite: Integer; X1,Y1: Integer);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.DreieckZeichnen(Ebenen: Integer; Breite: Integer; X1,Y1: Integer);
var BZ: Integer;
begin
BZ := Round (Breite/Ebenen);
with ImZeichnen.Canvas
do begin
MoveTo (x1,y1);
LineTo (PenPos.X+Round (Breite/2), PenPos.Y-Breite);
LineTo (PenPos.X+Round (Breite/2), PenPos.Y+Breite);
LineTo (x1,y1);
while PenPos.X < Breite
do begin
MoveTo (x1+BZ,y1);
LineTo (PenPos.X+ Round((Breite-BZ)/2), PenPos.Y-(Breite-BZ));
end;
end;
end;
procedure TForm1.ZeichnenClick(Sender: TObject);
begin
DreieckZeichnen (7,100,0,100);
end;
end.