2014-11-02 34 views
5

Tworzę okno z WS_EX_LAYERED i ustawiając dla niego klucz koloru za pomocą SetLayeredWindowAttributes(). Mogę zweryfikować, że ten klucz koloru rzeczywiście tworzy przezroczystą łatę w oknie, rysując prostą prostą za pomocą FillRect() wewnątrz okna. Nie działa to jednak, gdy rysuję w oknie za pomocą DirectDraw. Tworzę w oknie IDirectDrawSurface7 i mam do niego kilka pikseli. niektóre piksele są kolorowe za pomocą klawisza koloru, ale nie widzę ich jako przezroczystych, pojawiają się tylko w kluczu koloru.DirectDraw + Warstwowy klawisz koloru okna?

Czy jest coś nieodłącznego w powierzchni DirectDraw, która jest w konflikcie z warstwowym kluczowaniem w kolorze okna?
Kiedy ustawiam wartość alfa za pomocą SetLayeredWindowAttributes(), wydaje się, że działa dobrze z powierzchnią DirectDraw i rzeczywiście wygląda półprzezroczysto.

+0

Trochę stary, ale może warto go zobaczyć: http://msdn.microsoft.com/en-us/magazine/ee819134.aspx – TonyWilk

Odpowiedz

2

Nie wiem, czy widzieliście to, ale ten akapit z zamieszczonego poniżej artykułu wygląda trochę tak, jak tego szukacie.

The hWnd is the window handle of a window with a WS_EX_LAYERED style flag. The dwFlags parameter can have one or both of LWA_COLORKEY and LWA_ALPHA. If a LWA_COLORKEY flag is used, the crKey parameter is the transparent color key. If a LWA_ALPHA flag is used, the bAlpha parameter is the constat source alpha value. **Only top-level windows can be layered windows.**

myślę, że jego ostatnie zdanie, że jest problem. Źródło jest częściową częścią książki w google books. Można go odczytać z niektórymi przykładami kodu szczegółów znaleźć tutaj:

http://books.google.com/books?id=-O92IIF1Bj4C&pg=PA720&lpg=PA720&dq=WS_EX_LAYERED+%2B+DirectDraw+color+key&source=bl&ots=SyWKE3aimb&sig=DXbshrEk2tN17h7CtWdMmAkHlAo&hl=en&sa=X&ei=7_JcVKSyFMukNrumgMgB&ved=0CCkQ6AEwAg#v=onepage&q=WS_EX_LAYERED%20%2B%20DirectDraw%20color%20key&f=false

będę również zawierać następujące linki, które mówią o trochę o nim, chociaż nie w prawie taka sama ilość szczegółów:

http://web.cs.wpi.edu/~matt/courses/cs563/talks/cbyrd/pres3.html

http://msdn.microsoft.com/en-us/library/windows/hardware/ff567254(v=vs.85).aspx

nie wiem, czy to będzie odpowiedzieć na to pytanie, ale mam nadzieję, że pomaga trochę. Twoje zdrowie.

+0

Jak wspomniałem w pytaniu, nie mam problemu z używaniem mieszania alfa w tym okno z DirectDraw. więc 'WS_EX_LAYERED' działa w tym oknie, po prostu nie kluczowanie kolorami. – shoosh