Я делаю небольшую игру с растровыми изображениями, представляющими объекты, и пытаюсь замаскировать фон, используя растровую маску. Я посмотрел на 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()
Может кто-нибудь, пожалуйста, скажите мне, как я могу замаскировать фон, а затем переместить окно в новое место
Редактировать: Между прочим, Фон — это просто еще одно растровое изображение, загружаемое так же, как и другие, над которыми отображается корабль.
Задача ещё не решена.
Других решений пока нет …