Ich erstelle ein Fenster mit WS_EX_LAYERED
und setze einen Farbschlüssel mit SetLayeredWindowAttributes()
. Ich kann überprüfen, dass dieser Farbschlüssel in der Tat einen transparenten Patch im Fenster erstellt, indem er eine einfache Rect mit FillRect()
innerhalb des Fensters zeichnet. Dies funktioniert jedoch nicht, wenn ich mit DirectDraw in das Fenster zeichne. Ich erstelle eine IDirectDrawSurface7
auf dem Fenster und ich bin Blt()
einige Pixel dazu. Einige der Pixel sind mit dem Farbschlüssel gefärbt, aber ich sehe sie nicht als transparent, sie erscheinen nur in der Farbtaste.DirectDraw + Layered Fenster Farbschlüssel?
Gibt es etwas, das in der DirectDraw-Oberfläche inhärent ist, das mit der Farbcodierung von Ebenenfenstern kollidiert?
Wenn ich einen Alpha-Wert unter Verwendung SetLayeredWindowAttributes()
einstelle, scheinen das mit der DirectDraw-Oberfläche gut zu funktionieren, und es erscheint in der Tat durchscheinend.
Ein bisschen alt, aber vielleicht einen Blick wert: http://msdn.microsoft.com/en-us/magazine/ee819134.aspx – TonyWilk