![]() |
Canvas in Schleifen
Hallo allerseits,
Ich möchte gerne mithilfe des Canvasbefehls Canvas.Pixels[X,Y]:=TColor Ein beliebiges Objekt zeichnen, z.B. einen Kreis oder eine Ellipse etc. Dazu rechne ich X und Y für jeden Punkt aus und färbe diesen dann. Wie ich das genau berechne möchte ich hier jetzt gar nicht groß erklären, denn mein eigentliches Problem ist das ich am Ende jedes meiner vielen Versuche vor dem Problem stehe, dass der Canvasbefehl einfach nicht ausgeführt wird. Hier ein Beispiel(Nur ein Test für den Sachverhalt, nicht mein eigentliches Programm...): procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i:=1 to 100 do Canvas.Pixels[i,201]:=clBlack; Canvas.Pixels[i,202]:=clBlack; Canvas.Pixels[i,203]:=clBlack; Canvas.Pixels[i,204]:=clBlack; Canvas.Pixels[i,205]:=clBlack; end; Meines Wissens nach müsste es jetzt eine 5 Pixel breite und 100 Pixel lange Linie zeichnen, oder? Aber, wenn ich diesen Quelltext ausführen lasse und auf den Button klicke passiert einfach: Nichts.....:thumb: oder es kommt eine Fehlermeldung, dass C:/.../Programmname/Project1.exe nicht gefunden wurde. Bitte helft mir ich kenn mich mit Canvas nicht wirklich aus und verstehe nicht, warum das nicht funktioniert, ich hab alles schon mal statt einer Schleife mit einem Timer gemacht und es funktionierte perfekt. Aber wenn ich wirklich etwas zeichnen will, dauert das mit dem Timer zu lange... :( |
AW: Canvas in Schleifen
Deine For Schleife führt die Schleife nur bei dem ersten Canvas aus.
Wenn du es richtig machen willst, dann musst du alle Canvas in den Block setzten:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer; begin for i:=1 to 100 do begin Canvas.Pixels[i,201]:=clBlack; Canvas.Pixels[i,202]:=clBlack; Canvas.Pixels[i,203]:=clBlack; Canvas.Pixels[i,204]:=clBlack; Canvas.Pixels[i,205]:=clBlack; end; end; |
AW: Canvas in Schleifen
Eine ordentliche Codeformatierung zeigt ebenfalls das Problem und außerdem sagt sogar der Compiler, daß hier etwas nicht stimmt.
Delphi-Quellcode:
Aber warum wird denn kein Debugger verwendet und warum wird nicht auf das gehört, was der Compiler dir sagt?
var
i: integer; begin for i := 1 to 100 do Canvas.Pixels[i, 201] := clBlack; Canvas.Pixels[i, 202] := clBlack; Canvas.Pixels[i, 203] := clBlack; Canvas.Pixels[i, 204] := clBlack; Canvas.Pixels[i, 205] := clBlack; end; Im Debugger sieht man sehr gut (F7), daß nur das erste Canvas.Pixels in der Schleife ausgeführt wird und der Compiler sagt ebenfalls, daß der zweite i-Zugriff nicht in der Schleife liegt. Zitat:
|
AW: Canvas in Schleifen
Zitat:
![]() Zitat:
|
AW: Canvas in Schleifen
Ok, danke erstmal für die schnellen Antworten. :)
Tatsächlich, jetzt geht'S... Ich sollte mir nochmal meinne Schleifen anschauen;) Danke auch für den Tipp mit OnPaint. :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 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