Entwickler-Ecke

Multimedia / Grafik - Refresh?


Thomas_1110 - Sa 19.04.03 23:05
Titel: Refresh?
Hallo
Bin noch sehr unerfahren in Delphi.
Ich frag mich was macht eigentlich Refresh bezüglich auf Canvas oder wie setzt man das richtig ein?
Gruß Thomas


Andreas Pfau - So 20.04.03 20:44

Habe cih noch nie benutzt. Laut der Online-Hilfe werden die Eigenschaften Pen, Brush und Font vom DC gelöscht, und später wieder automatisch gesetzt. Hört sich nach debugging an.

Villeicht suchst du eher nach Repaint oder Invalidate. Mit deisen Befehlen weist du z.b. einem TImage an, den Inhalt neu zu zeichnen (Repaint->sofort, Invalidate->Sobald genug Zeit ist).


t/f - So 20.04.03 22:33

Wenn du z.B. schreibst:


Quelltext
1:
2:
Form1.Canvas.Pen.MoveTo(x,y);
Form1.Canvas.Pen.LineTo(x2,y2);


...

dann wird mit


Quelltext
1:
2:
Form1.Refresh;
//Delphi 6


so ein Strich wieder weggewischt. Also du kannst die Canvas mit solchen Malereien vollkrickeln und danach mit Refresh wieder sauberwischen.
Die Buttons und so Komponentenzeugs beleibt jedoch erhalten.

greetz
//me


Thomas_1110 - Mo 21.04.03 00:34

Hallo
Aber wenn ich in eine TImage zeichne funktioniert das nicht (Delphi 3).
Bis jetzt mach ichs immer so wenn ich löschen will, daß ich ein ausgefülltes Rechteck über die Zeichnung lege. Gibts da keine andere Lösung?
Gruß Thomas


t/f - Mo 21.04.03 00:49

du kannst auch auf Form1.Canvas draufzeichnen ;).... das Nutzen eines Images prinzipiell eigentlich nicht von nöten, soweit ich weiß.

Schonmal probiert 'n Image zu refreshen?
Oder pssiert da nix?

greetz
//me


t/f - Mo 21.04.03 00:55

Also hab' einfach in die Delphi-Hilfe geguckt. Dort steht, dass mithilfe von Refresh die Funktion Repaint aufgerufen wird.

Repaint gehört zur Klasse TControl und erzwingt das "Neumalen" eines Images.

sollte also mit so ziemlich allen Canvases und Images funzen.

greetz
//me ... :D


Thomas_1110 - Mo 21.04.03 03:46

Hallo
ja das hab ich auch gelesen. Refresh macht nix anders als Repaint.
Wenn ich auf Form1 zeichne und es wird durch ein anderes Fenster überlagert dann verschwindet meine Zeichnung wenn die Zeichnung wieder im sichtbaren Bereich wäre (das ließe sich sicher mit Ereignissen steuern muß aber nicht sein).
Vielleicht ist das auch der Grund warum ein Refresh auf Form1 ein sichtbares Ergebnis bringt und auf Image1 nicht.
Gruß Thomas