2

オブジェクトを表すビットマップを使用して小さなゲームを作成しており、ビットマップマスクを使用して背景をマスクしようとしています。私はそれをグーグルで調べて、2つのビットマップを作りました。船の1つとマスクとしての1つ。マスクは、見たいものをすべて黒、背景を白に着色しました。(これが反対であるはずだった場合は、私に知らせてください)。ビットマップを次のようにロードします。

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()

背景をマスクしてからウィンドウを新しい場所に移動する方法を教えてください。

編集:ちなみに、背景は、船が上に表示されている他のビットマップと同じ方法でロードされた別のビットマップです。

4

0 に答える 0