Paint-Ereignis

14/04/2010 - 13:20 von Heinz-Mario Frühbeis | Report spam
Hallo!

Ich "würde" ja ganz gerne in meinen Programmen auch lediglich auf das
Paint-Ereignis zum zeichnen zurückgreifen ... aber kann es sein das dieser
Event nicht immer gefeuert wird?

Beim Resize wird Paint nur gefeuert, wenn ich die Form größer ziehe.
Wenn ich eine Form außerhalb des sichtbaren Bildschirms bewege und dann
wieder innerhalb ist die Zeichnung auf der Form zum Teufel.
Ergo nutze ich :
AutoRedraw = True
Zeichnen
AutoRedraw = False
im Lade-, bzw. Activate-Ereignis und Resize-Ereignis.

Ein Refresh-Befehl im Resize-Ereignis bringt erhebliches Flackern.

Was tun?

viele Grüße
Heinz-Mario
 

Lesen sie die antworten

#1 Horst Heinrich Dittgens
16/04/2010 - 15:43 | Warnen spam
Ich "würde" ja ganz gerne in meinen Programmen auch lediglich auf das
Paint-Ereignis zum zeichnen zurückgreifen ... aber kann es sein das dieser
Event nicht immer gefeuert wird?

Beim Resize wird Paint nur gefeuert, wenn ich die Form größer ziehe.



Das Paint-Ereignis soll nur signalisieren, wenn *Windows* eine Neuzeichnung
für nötig erachtet. Bei einer bloßen Verkleinerung des Ausschnitts ist dies
nicht der Fall, wohl aber, wenn das Fenster vergrößert oder eine
Überlagerung verkleinert wird.

Wird ein Fenstergrößenverànderung *aufgrund der Programmlogik* eine neue
Skalierung/Neuzeichnung nötig, dann weiß das Programm das ja und kann im
Resize-Event seine Neuzeichnen-Routine aufrufen.

Wenn ich eine Form außerhalb des sichtbaren Bildschirms bewege und dann
wieder innerhalb ist die Zeichnung auf der Form zum Teufel.
Ergo nutze ich :
AutoRedraw = True
Zeichnen
AutoRedraw = False



Das zweite AutoRedraw ist unnötig. Wenn vom Programm danach nichts mehr neu
hinzu gezeichnet wird, braucht man auch die 'Bildkopie' nicht abschalten.

Ein Refresh-Befehl im Resize-Ereignis bringt erhebliches Flackern.



Wird im Resize-Event gezeichnet, dann sollte man bedenken, daß bei einer
Änderung von Form-Breite und -Höhe zwei Resize-Events generiert werden und
demzufolge zweimal gezeichnet wird, falls man das nicht abfàngt. Ansonsten
kann man bei zeitintensiven Zeichnungen die Fensteraktualisierung temporàr
abschalten.

Ähnliche fragen