ホーム > デベロッパ > BREW FAQ

BREW FAQ : 透過色をもつビットマップを描画するには?

透過色をもつビットマップを描画するには?

透過色をもつビットマップを描画するには、 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();