Bitmap以外の(IImageインターフェイスでのみ扱うことができる)形式の画像で、透過色は扱えますか。
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);