WinApi ładowanie bitmap do kontrolek/przeźroczystość tła kontrolek

0

Mój problem jest następujący. Zaczynam pisanie w WinApi i chciałem zrobić buttony z własną teksturą, lecz niestety nie znalazłem jakiegoś konkretnego tutorialu jka to poprawnie zrobić, próbowalem z kilkoma i jedyne co udało mi się zrobić to załadować bitmapę do głównego okna i dalej już stanałem bo tutoriale które widziałem nie sa zbyt jasno napisane. To skrypt którym się posłuzyłem do wyświetlenia bit mapy.

	
HBITMAP bitmapa;
BITMAP info_bitmapy;

case WM_PAINT:
     hdc=BeginPaint(hwnd,&ps); //kontekst okna uzyskujemy w momencie odrysowywania
     hdcBitmapy=CreateCompatibleDC(hdc); //teraz musimy utworzyć kontekst pamięciowy dla bitmapy
     bitmapa=(HBITMAP)SelectObject(hdcBitmapy,bitmapa); //zamieniamy konteksty wiążąc bitmapę z kontekstem
     //tutaj możemy przeprowadzać jakieś operacje graficzne z naszym kontekstem bitmapy
     //uwaga te operacje będą przeprowadzane co każde odświeżenie okna
     //wyświetlenie bitmapy na oknie, operacja przekopiowania
     BitBlt(hdc,0,0,info_bitmapy.bmWidth,info_bitmapy.bmHeight,hdcBitmapy,0,0,SRCCOPY);
     bitmapa=(HBITMAP)SelectObject(hdcBitmapy,bitmapa); //z powrotem zamieniamy bitmapy w kontekście
     DeleteDC(hdcBitmapy); //usuwamy kontekst pamięciowy bitmapy
     EndPaint(hwnd,&ps);
       break;

Byłby bardzo wdzięczny gdyby ktoś pokazał mi jak przypisuje się konkretną bit mapę od konkretnego buttona.

Alternatywnym sposobme rozwiazania tego jets zrobienie wszystkich buttonów przeźroczystych (tak aby było mozliwe kliknięcie ich, lecz nie były widoczne), wtedy wszystkie zrobiłbym sobie na bitmapie i będzie to chyba prostrze niż uczenie mnie 1 sposobu.
Z góry wszystkim dziękuje za pomoc.

0

Musisz przygotować dwie bitmapy. Jedna to maska przezroczystości. Druga to obrazek właściwy. Najpierw malujesz pierwszą w trybie SRCAND (iloczyn), później drugą w trybie SRCPAINT (suma).

http://www.winprog.org/tutorial/transparency.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1