winapi — Использование BitBlt для маскировки фона растрового переполнения стека

Я делаю небольшую игру с растровыми изображениями, представляющими объекты, и пытаюсь замаскировать фон, используя растровую маску. Я посмотрел на Google и сделал два растровых изображения. Один из корабля и один как маска. Для маски я покрасил все, что хотел, в видимый черный цвет и белый фон. (Если это должно было быть наоборот, пожалуйста, дайте мне знать). Я загружаю растровые изображения так:

HBITMAP bmpShip = (HBITMAP)LoadImage(NULL,
"C:\\Users\\Owner\\Desktop\\Asteroids\\Starship.bmp",
IMAGE_BITMAP,
0,
0,
LR_LOADFROMFILE);

HBITMAP hShipMask = (HBITMAP)LoadImage(NULL,
"C:\\Users\\Owner\\Desktop\\Asteroids\\StarshipMask.bmp",
IMAGE_BITMAP,
0,
0,
LR_LOADFROMFILE);

Теперь, как я могу использовать растровые операции BitBlt для отображения растрового изображения без фона на экране в определенном месте. Без маскировки фона, это то, что я делал:

Ship = CreateWindowEx(0,
"STATIC","",
SS_CENTERIMAGE | SS_REALSIZEIMAGE | SS_BITMAP | WS_CHILD | WS_VISIBLE,
10,
shipPos,
294,
86,
Background,
(HMENU)-1,
NULL, NULL);
SendMessage(Ship, STM_SETIMAGE,  (WPARAM)IMAGE_BITMAP, (LPARAM)bmpShip);
UpdateWindow(hWnd);

//And moving the window with MoveWindow()

Может кто-нибудь, пожалуйста, скажите мне, как я могу замаскировать фон, а затем переместить окно в новое место

Редактировать: Между прочим, Фон — это просто еще одно растровое изображение, загружаемое так же, как и другие, над которыми отображается корабль.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]