Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Kästchen am Bildschirm zeichnen (https://www.delphipraxis.net/23418-kaestchen-am-bildschirm-zeichnen.html)

n00b_on_knees 2. Jun 2004 19:45


Kästchen am Bildschirm zeichnen
 
Hallo.

Ich soll Kästchen in einer Paintbox zeichnen. Gibt es eine andere Lösung als diese dafür? Eine bessere? Einfachere? Bitte immer her mit euren Vorschlägen.
Das Programm soll zufällig Kästchen am Bildschirm darstellen..das ganze mit einer Liste, wie man weiter unten erkennt.

Delphi-Quellcode:
constructor TControler.Create(N: integer; pb: TPaintbox);
var
  i : integer;
  new : TBug;
begin
  FSize := 10;
  FN := N;
  Fpb := pb;
  FList := TBugList.Create;
  for i := 0 to N-1 do
  begin
    new := TBug.Create(random(width),random(height),FSize,random(256*256*256),clBtnFace,pb.canvas);
    FList.Add(new);
  end;
end;


mfg

Luckie 2. Jun 2004 19:47

Re: Kästchen am Bildschirm zeichnen
 
Wo wird da überhaupt irgendetwas gezeichnet? :gruebel:

n00b_on_knees 2. Jun 2004 19:52

Re: Kästchen am Bildschirm zeichnen
 
tut mir leid, hab das ganze wohl zu falsch formuliert :( das ganze ist in einem anderem Unterprogramm.

Hier wird ein neues Element erzeugt, der Liste hinzugefügt..das dann gezeichnet später wird.

Luckie 2. Jun 2004 19:55

Re: Kästchen am Bildschirm zeichnen
 
Und was willst du jetzt wissen? Mit dem Codebruchstück kann man nichts anfangen und das
Zitat:

Ich soll Kästchen in einer Paintbox zeichnen. Gibt es eine andere Lösung als diese dafür?
Hilft nicht weiter, da du weder die richtige Zeichenroutune postest und dich sehr bedeckt hältst, was weitere Informationen angeht.

n00b_on_knees 2. Jun 2004 20:02

Re: Kästchen am Bildschirm zeichnen
 
Mit dieser Funktion zeichnet das ganze..glaube ich Zumindest:

Delphi-Quellcode:
procedure TControler.Step;
var i : integer;
  dir : TDirection;
begin
  for i := 0 to Flist.Count - 1 do
  begin
    dir := TDirection(random(4));
    if Fpb.Canvas.Pixels[FList.Bugs[i].NextLeft[dir],FList.Bugs[i].NextTop[dir]]<>Fpb.color then
    begin
      FList.Bugs[i].Direction := dir;
      Flist.Bugs[i].Move;
    end
    else
      FList.Bugs[i].Show;
  end;
end;
und ich würde gern den oberen und diesen code durch eine andere Lösung ersetzen. Das ganze Programm soll eine beliebige Anzahl von Kästchen in zufälliger Richtung über den Bildschirm laufen lassen. Die Methode step prüft, ob sich an dem Platz an dem gezeichnet werden soll, schon ein Kästchen befindet. Wenn ja wird Direction freigesetzt. Move bewegt, Show zeigt..

das ganze in dieser klasse:

Delphi-Quellcode:
type TControler = class
     private
       //private Variable zum Speichern von Höhe, Breite und Anzahl
       FHeight, FN, FWidth : integer;
       //private Paintbox, in die gezeichnet werden soll
       FPb : TPaintBox;
       //private Liste zum verwalten der Bugs
       Flist : TBugList;
       FSize : integer;
     protected

     public
       //Properties
       property Height : integer read FHeight write FHeight;
       property N : integer read FN write FN;
       property Width : integer read FWidth write FWidth;
       //Konstruktor
       constructor Create(N:integer;pb : TPaintbox);
       //Destruktor
       destructor Free;
       procedure Show;
       procedure Step;

Nicodius 23. Jun 2004 15:25

Re: Kästchen am Bildschirm zeichnen
 
Delphi-Quellcode:
canvas.rectangle(left,top,width,height)

meinst du das :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 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 by Thomas Breitkreuz