AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Canvas in Schleifen

Ein Thema von Konny · begonnen am 17. Mär 2015 · letzter Beitrag vom 18. Mär 2015
Antwort Antwort
Konny

Registriert seit: 17. Mär 2015
3 Beiträge
 
#1

Canvas in Schleifen

  Alt 17. Mär 2015, 22:44
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.....
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...
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Canvas in Schleifen

  Alt 17. Mär 2015, 22:51
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.448 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Canvas in Schleifen

  Alt 17. Mär 2015, 23:11
Eine ordentliche Codeformatierung zeigt ebenfalls das Problem und außerdem sagt sogar der Compiler, daß hier etwas nicht stimmt.
Delphi-Quellcode:
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;
Aber warum wird denn kein Debugger verwendet und warum wird nicht auf das gehört, was der Compiler dir sagt?

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:
[dcc32 Warnung] Unit23.pas(82): W1037 FOR-Schleifenvariable 'i' kann nach Durchlauf undefiniert sein
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (17. Mär 2015 um 23:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.317 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Canvas in Schleifen

  Alt 18. Mär 2015, 06:11
Aber, wenn ich diesen Quelltext ausführen lasse und auf den Button klicke passiert einfach: Nichts.....
Die Zeichenbefehle gehören in das OnPaint. Denn sobald ein anderes Fenster deines verdeckt, ist sonst alles Gezeichnete wieder weg. Luckie hat da ein Beispiel:
http://michael-puff.de/Programmierun...enBitmap.shtml

oder es kommt eine Fehlermeldung, dass C:/.../Programmname/Project1.exe nicht gefunden wurde.
Das dürfte am Virenscanner liegen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Konny

Registriert seit: 17. Mär 2015
3 Beiträge
 
#5

AW: Canvas in Schleifen

  Alt 18. Mär 2015, 08:33
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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf