使用BitBlt来掩盖位图C ++的背景

时间:2012-11-25 22:06:22

标签: c++ winapi bitmap 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()

任何人都可以告诉我如何掩饰背景然后将窗口移动到新位置

编辑:顺便说一句,背景只是另一个位图加载方式与其他显示在船上的位图相同。

0 个答案:

没有答案