![]() |
Shapes im Programm erstellen oder Alternative
Hallo,
ich möchte als Übung ein Programm, welches ich bei einem Bekannten im Informatikkurs eine Stufe über mir gesehen habe nachstellen. Und zwar wurden in einem Form timergesteuert verschiedenfarbige und verschiedengroße Vierecke an verschiedenen Positionen erstellt. Das die ganzen Zufallswerte mit Random erstellt werden weiß ich. Alles kein Problem. Jedoch ist mir nicht klar wie die bunten Felder überhaupt erzeugt und übereinander gelegt werden? Das Einzige was mir in den Sinn käme wären Shapes die als SchapeN erstellt werden wobei N eine fortlaufende Zahl ist. Allerdings wäre diese Zahl ja auch begrenzt und vorallem würde mir diese Methode höchst "unsauber" vorkommen, da sie sicherlich unnötig viel Speicher verbraucht. Welche einfache Methode gäbe es da, die Vierecke zu erzeugen? Liebe Grüße, eXtense |
AW: Shapes im Programm erstellen oder Alternative
Ich verstehe nicht ganz wo Du hin willst...
Shapes kannst Du dynamisch erzeugen, einfärben und positionieren. Du könntest auch etwas in der Art machen..., allein der Sinn erschließt sich mir nicht...
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TRectInfo=Record Farbe : TColor; Bounds : TRect; End; TRectInfoArray=Array of TRectInfo; TForm1 = class(TForm) Timer1: TTimer; procedure Timer1Timer(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private-Deklarationen } FRectInfoArray:TRectInfoArray; procedure AddOneRect; public { Public-Deklarationen } end; var Form1: TForm1; implementation const C_Size=100; {$R *.dfm} procedure TForm1.AddOneRect; var idx:Integer; begin SetLength(FRectInfoArray, High(FRectInfoArray) + 2); idx := High(FRectInfoArray); FRectInfoArray[idx].Farbe := Random(clWhite); FRectInfoArray[idx].Bounds.Left := Random(Width - C_Size); FRectInfoArray[idx].Bounds.Top := Random(Height - C_Size); FRectInfoArray[idx].Bounds.Right := FRectInfoArray[idx].Bounds.Left + Random(C_Size); FRectInfoArray[idx].Bounds.Bottom := FRectInfoArray[idx].Bounds.Top + Random(C_Size); invalidate; end; procedure TForm1.FormPaint(Sender: TObject); var i:Integer; begin for I := Low(FRectInfoArray) to High(FRectInfoArray) do begin Canvas.Brush.Color := FRectInfoArray[i].Farbe; Canvas.Rectangle(FRectInfoArray[i].Bounds.Left, Height - FRectInfoArray[i].Bounds.top,FRectInfoArray[i].Bounds.Right, Height - FRectInfoArray[i].Bounds.Bottom); end; end; procedure TForm1.Timer1Timer(Sender: TObject); begin AddOneRect; end; end. |
AW: Shapes im Programm erstellen oder Alternative
Vielen Dank für deine Antwort.
Ich werde den Quelltext, sobald ich ihn verstanden habe mal testen. Der Sinn ist wie oben geschrieben "Übung" bzw aneignung neuen Wissens. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz