Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Canvas Zeichnet nicht (https://www.delphipraxis.net/191316-canvas-zeichnet-nicht.html)

p80286 2. Jan 2017 14:22

Canvas Zeichnet nicht
 
Eine blöde Frage, aber ich weiß nicht was ich falsch mache.

Mein Programm läuft in Form1 und ich bin auf die gute Idee gekommen, ein paar Daten in der Zeitlichen Abfolge auf Form2 anzuzeigen.
Also etwa so:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  PaintMydata;
end;

....

procedure TForm2.FormPaint(Sender: TObject);
begin
  PaintMyData;
end;
Wen ich den Debugger frage, alles wird ausgeführt, nur angezeigt wird nichts (Form2 hat nicht den Focus!)

Erst wenn ich ein anderes Fenster über Form2 hin und her bewege, oder wenn ich Form2 verkleinere/vergrößere, dann wird in den vorher verdeckten Bereichen etwas angezeigt.
(ich zeichne direkt auf das Form.Canvas)

was mache ich da falsch?

Gruß
K-H

Der schöne Günther 2. Jan 2017 14:25

AW: Canvas Zeichnet nicht
 
Ersetze den Inhalt von
Delphi-Quellcode:
Button1Click
doch mal durch
Delphi-Quellcode:
Invalidate()
bzw.
Delphi-Quellcode:
Repaint()

p80286 2. Jan 2017 14:52

AW: Canvas Zeichnet nicht
 
Warum?
Das ist das initiale Zeichnen, bzw. sollte es sein.
Wahrscheinlich kommt das OnPaint von Form2 recht schnell, aber wenn nicht kann ich gut verstehen, das es einen leeren Bildschirm gibt.
Auch ja das hab ich vergessen, Form2 ist bis auf den Rand schwarz, das Löschen am Anfang der Zeichenroutine scheint zu funktionieren.

Gruß
K-H

stahli 2. Jan 2017 15:28

AW: Canvas Zeichnet nicht
 
Beschreib mal noch genauer, was Du genau machst und was (nicht) klappt.
Vielleicht Demo-Projekt?

Ich hatte mal - wenn ich Dich richtig verstehe - etwas ähnliches genutzt.
Schau mal hier http://www.delphipraxis.net/175033-f...-schlecht.html ab #30 und hier in Aktion: http://youtu.be/iBi6SM3fjEs

p80286 2. Jan 2017 16:06

AW: Canvas Zeichnet nicht
 
Bin z.Zt auffe Arbeit und die Sourcen liegen zu Hause.
Aber ganz simpel
Delphi-Quellcode:
Canvas.drawline
Canvas.moveto

usw.
und wie oben beschrieben, sobald ich mit einem anderen Fenster darüber "wische" taucht alles auf :shock:

Gruß
K-H

Uwe Raabe 2. Jan 2017 16:29

AW: Canvas Zeichnet nicht
 
Ich schlage vor, du hältst dich an den Rat von Günther und schreibst:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Invalidate;
end;

....

procedure TForm2.FormPaint(Sender: TObject);
begin
  PaintMyData;
end;
Wenn ich das richtig in Erinnerung habe, entscheidet seit einigen Versionen Windows selbst wann etwas dargestellt wird und bemüht dazu in diesem Fall den OnPaint-Event des Forms.

p80286 2. Jan 2017 16:31

AW: Canvas Zeichnet nicht
 
das isn Argument!
OK dann wird ich das nachher mal ausprobieren.

Gruß
K-H

stahli 2. Jan 2017 16:32

AW: Canvas Zeichnet nicht
 
Ich bin nicht sicher, aber vermutlich muss der Formular(canvas)inhalt auch noch in den Screen kopiert werden und dafür braucht Windows einen Anlass.

Möglicherweise verhält sich Deine Anwendung auch unter verschiedenen Systemen unterschiedlich - je nach Grafikeinstellungen.

Hast Du den Tipp von Günther mal probiert?

EWeiss 2. Jan 2017 16:46

AW: Canvas Zeichnet nicht
 
Zitat:

Hast Du den Tipp von Günther mal probiert?
Das wird funktionieren vorausgesetzt

Canvas.drawline
Canvas.moveto

bzw.. PaintMyData;

befindet sich im OnPaint Event der Form
was durch Invalidate aufgerufen wird.

gruss

Rollo62 2. Jan 2017 18:08

AW: Canvas Zeichnet nicht
 
Fehlt da nicht Canvas.BeginScene .EndScene ?

Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz