透過色をもつビットマップを描画するには ?
透過色をもつビットマップを描画するには、 IBITMAP_SetTransparencyColor 関数を使用して透過色を設定します。 デフォルトの透過色は、マゼンタ色(R:255, G:0, B:255)です。 その後、引数に AEE_RO_TRANSPARENT を指定して、IDISPLAY_BitBlt などの描画関数を呼び出します。
SophiaFramework では、 SFBBitmap::SetTransparencyColor を使用して透過色を設定します。 その後、引数に AEE_RO_TRANSPARENT を指定して SFBDisplay::BitBlt などの描画関数を呼び出します。
[ BREW API のみを使用したコード ]
// // 透過色を使用したビットマップを描画します。 // // リソース ファイルから読み込むビットマップ画像のリソース ID #define IDB_MY_PICTURE 0x0001 IShell* shell = app->a.m_pIShell; IDisplay* display = app->a.m_pIDisplay; IBitmap* bmp; // 透過色を含んだ画像を描画します。 // リソース ファイルから透過色を含んだビットマップを取得します。 bmp = ISHELL_LoadResBitmap(shell, MYRESOURCE_RES_FILE, IDB_MY_PICTURE); if (bmp != NULL) { // 描画するビットマップの透過色をマゼンタ色に設定します。 IBITMAP_SetTransparencyColor(bmp, IBITMAP_RGBToNative(bmp, MAKE_RGB(255, 0, 255))); // AEE_RO_TRANSPARENT モードで描画します。 IDISPLAY_BitBlt(display, 0, 0, 100, 100, bmp, 0, 0, AEE_RO_TRANSPARENT); // ビットマップを破棄します。 IBITMAP_Release(bmp); } // 画面を更新します。 IDISPLAY_Update(display);
[ SophiaFramework を使用したコード ]
// // 透過色を使用したビットマップを描画します。 // // リソース ファイルから読み込むビットマップ画像のリソース ID #define IDB_MY_PICTURE 0x0001 SFBShellSmp shell = SFBShell::GetInstance(); SFBDisplaySmp display = SFBDisplay::GetInstance(); SFBBitmapSmp bmp; // 透過色を含んだ画像を描画します。 // リソース ファイルから透過色を含んだビットマップを取得します。 bmp = shell->LoadResBitmap(MYRESOURCE_RES_FILE, IDB_MY_PICTURE); if (bmp != NULL) { // 描画するビットマップの透過色をマゼンタ色に設定します。 bmp->SetTransparencyColor(bmp->ColorToNative(SFXRGBColor(255, 0, 255, 0))); // AEE_RO_TRANSPARENT モードで描画します。 display->BitBlt(SFXRectangle(0, 0, 100, 100), bmp, SFXGrid(0, 0), AEE_RO_TRANSPARENT); } // 画面を更新します。 display->Update();