![]() |
Auf Desktop zeichnen und DoubleBuffered
Mein Programm zeichnet direkt auf das Desktop DC. Dabei handelt es sich um ein animiertes Menü und damit es nicht flackert, zeichne ich alles zuerst Schritt für Schritt auf ein temporäres DC und bringe es dann auf das Desktop DC. Doch muss ich die Zeichenfläche vor jedem neuen "Rendern" löschen, da sich sonst schlieren Bilden. Allerdings kann ich die Fläche ja nicht einfach schwarz machen, wie man es z.B. bei der OpenGl Programierung machen würde. Auf dem Desktop ist ja auch was, was nicht unter den Zeichenaufgabenbereich meines Programms fällt. Zur Zeit wird der Screen gelöscht, in dem er mit einem Screenshot übermalt wird, der vorm Aufrauf des Menüs gemacht wird.
Logisch, dass es nicht so sauber ist. Läuft z.B. ein Video im Hintergrund oder irgend was anderes bewegt sich ist nur ein Standbild zu sehen. Wie kann ich das Problem lösen? Wenn ich jedes mal InvalidateRect aufrufe, flackert der ganze Bildschirm. Ich müsste Windows irgendwie mitteilen, die Teile neu zu zeichen, die nicht mehr von meinem Menü verdeckt sind. Kann mir jemand helfen? |
Re: Auf Desktop zeichnen und DoubleBuffered
Ich würde an deiner Stelle das Menü nicht direkt auf den desktop zeichnen, sondern in ein eigenes Fenster - auf diese Weise hinterlässt es keine Spuren und du kannst auch die interaktion mit dem Menü besser kontrollieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz