[GDI] rysowanie bitmapy na drugiej z przezroczystością

0

Witam. Mam taki problem. W winapi rysuję za pomocą podwójnego buforowania. I teraz po jednym z etapów tworzenia bitmapy, chcę wrzucić pod nią jakiś rysunek, np inną bitmapę. Mniej więcej koncepcję mam. Można zrobić tak że każdy etap będzie tworzony na osobnej bitmapie i podczas renderowania obrazu będą w odpowiedniej kolejności wstawiane na główny bufor, a potem w całości kopiowane na kontekst urządzenia.

Etap1, BM1 - tworzenie elementu obrazu
Etap2, BM2 - tworzenie elementu obrazu
Etap3, BM3 - tworzenie elementu obrazu
Etap4, BM bufora nałożenie bitmap w losowej kolejności bez uwzględniania tła.
Etap5, skopiowanie BM bufora na kontekst urządzenia okna

BM - obiekt HBITMAP.

Niestety nie mam pojęcia jak skopiować obraz z jednego kontekstu do drugiego, tak aby tło było przezroczyste, np tłem byłby magiczny róż.

0

TransparentBlt - to samo co BitBlt, tyle że ostatni parametr (zamiast SRCCOPY) określa który kolor w źródle jest przezroczysty.

0

podpowiem tylko, że na XP BitBlit/TransparentBlt będą śmigać tak szybko, na ile przepustowość GPU pozwoli, ale na Viście może czekać Cie rozczarowanie - GDI nie ma wsparcia sprzętowego- wszystko przeżuwa CPU i widać to. Win 7 wsparcie znowu się pojawia, choć działa wolniej niż dla XP- przynajmniej na moim ATI HD3650.

0

Ważne, żeby szybciej działało od getpixel/setpixel :), ale działa na Viście i nie jest tak źle, bo w większości są to małe rysunki. Może później rozważę przejście na DirectX lub na OpenGL.

Dziękuję za odpowiedzi.

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