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

BREW FAQ : Windows BMP 以外の形式の画像でも、透過色は扱えますか。

Windows BMP 以外の形式の画像でも、透過色は扱えますか。

WindowsBMP 以外の (IImage インターフェイスでのみ扱うことができる) 形式の画像でも、透過色は扱えます。

例として PNG 形式の画像を元に説明をします。透過モードで PNG 形式の画像をデバイスピットマップに転送するには、以下の手順を踏みます。このとき、使用する PNG 形式の画像は、透過設定をして作成してください。

[手順]

  • 1. ISHELL_LoadResImage() を使用して、リソース ファイルから PNG 形式の画像を取得します。
  • 2. IIMAGE_SetParm() の第 2 引数に IPARM_ROP を、第三引数に AEE_RO_TRANSPARENT を設定して呼び出します。これにより、イメージ画像を透過モードで扱います。
  • 3. IIMAGE_Draw() を呼び出し、デバイスビットマップにイメージ画像を描画します。
  • 4. IDISPLAY_Update() を呼び出し、画面を更新します。
IShell*     shell   = app->a.m_pIShell;
IDisplay*   display = app->a.m_pIDisplay;
IImage*     icon    = NULL;
IImage*     tile    = NULL;

// リソース ファイルから PNG イメージを読み込みます。
icon = ISHELL_LoadResImage(shell, IIMAGETRANS_RES_FILE, IDI_ICON_PNG);
tile = ISHELL_LoadResImage(shell, IIMAGETRANS_RES_FILE, IDI_TILE_PNG);

// タイルを描画します。(背景の描画をします。)
if (tile != NULL) {

    // タイルをデバイスビットマップに描画します。
    IIMAGE_Draw(tile, // オブジェクト
                0,    // 描画先の X 座標
                0);   // 描画先の Y 座標

    // イメージ破棄を破棄します。
    IIMAGE_Release(tile);
}

// アイコンを描画します。(重ね合わせる画像を表示します。)
if (icon != NULL) {

    // IImage (icon) の透過設定をします。
    // IPARM_ROP は、ラスタを操作することを示しています。
    // AEE_RO_TRANSPARENT は、透過モードでイメージ画像を扱うことを示しています。
    IIMAGE_SetParm(icon, IPARM_ROP, AEE_RO_TRANSPARENT, 0);


    // アイコンをデバイスビットマップに描画します。
    IIMAGE_Draw(icon, // オブジェクト
                0,    // 描画先の X 座標
                0);   // 描画先の Y 座標

    // イメージ破棄を破棄します。
    IIMAGE_Release(icon);
}

// 画面の更新をします。
IDISPLAY_Update(display);