Autor Beitrag
lemming
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Mo 26.08.02 13:48 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: 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.

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
GPF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 85



BeitragVerfasst: 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.

_________________
"Wenn Debugging ein Vorgang ist, Fehler aus einem Programm auszubauen, dann ist Programmieren der Vorgang, Fehler einzubauen."
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: 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.

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.