Entwickler-Ecke

Multimedia / Grafik - Sicherer Canvas


lemming - Mo 26.08.02 13:48
Titel: Sicherer Canvas
Hi,

ich habe das Problem, das wenn ich auf meinen Canvas Zeichne und irgendwas (ein anderes Fenster) darüber fliegt ist alles wieder gelöscht. Wie kann ich diesen katastrophalen Zustand abstellen?

lemming.


OregonGhost - Mo 26.08.02 18:09

Scherzbold. Du zeichnest doch hoffentlich im OnPaint-Ereignis (oder wenn du nicht so auf VCL stehst, in der WM_PAINT-Behandlungsroutine) auf deinen Canvas, oder? Dafür ist diese Nachricht nämlich gedacht. Das heißt, du musst alles immer neu zeichnen, bzw. den Bereich der als dreckig gekennzeichnet ist. Du kannst die Arbeit aber auch an eine Komponente, zum Beispiel TImage abwälzen, indem du dort in den Canvas der Bitmap zeichnest.

Alternativ kannst du auch einen besonderen Fensterstil setzen (weiß jetzt nicht, wie der heißt), so dass Windows den Gerätekontext des Fensters als Bitmap behandelt und selbst neu zeichnet.


GPF - Di 27.08.02 19:40

Oder benutze einfach eine TImage Komponente. Dort wird der Inhalt gleich mitgespeichert und braucht nicht ständig erneuert werden.


OregonGhost - Mi 28.08.02 15:46

@GPF: Danke, dass du mich nochmal wiederholst ;c)

Was ich noch sagen wollte:
Dieses Verhalten von Windows ist völlig korrekt. Das stammt nämlich aus der Zeit, in der Speicher knapp war. Wenn du nämlich nicht bei Bedarf das Teil neu zeichnest (in den Bildschirmspeicher, wenn man so will), müsste man sowas immer in Bitmaps speichern. Und jetzt überleg' mal, für jedes, auch für jedes unsichtbare, Fenster müsste eine Bitmap in Größe des Fensters gespeichert werden. Da kann schnell eine ganz schöne Menge zusammenkommen, die einfach zu umfangreich für alte Systeme ist. Deswegen bietet Windows inzwischen ja auch den besagten Fensterstil, dessen Name ich immer noch nicht weiß, an, um genau das Verhalten mit Bitmaps zu ermöglichen, ohne User-Zutun.