イメージを描画するには、 CImageList::D raw メンバー関数を使用します。 デバイス コンテキスト オブジェクトへのポインター、描画するイメージのインデックス、イメージを描画するデバイス コンテキスト内の場所、および描画スタイルを示すフラグのセットを指定します。
ILD_TRANSPARENT スタイルを指定すると、Draw
は 2 段階のプロセスを使用してマスクされたイメージを描画します。 まず、イメージのビットとマスクのビットに対して論理 AND 演算を実行します。 次に、最初の操作の結果と宛先デバイス コンテキストのバックグラウンド ビットに対して論理 XOR 操作を実行します。 このプロセスにより、結果の画像に透明な領域が作成されます。つまり、マスク内の各白いビットによって、結果のイメージ内の対応するビットが透明になります。
マスクされたイメージを単色の背景に描画する前に、 SetBkColor メンバー関数を使用して、イメージ リストの背景色を宛先と同じ色に設定する必要があります。 色を設定すると、イメージ内に透明な領域を作成する必要がなくなり、 Draw
はイメージをコピー先のデバイス コンテキストにコピーするだけで、パフォーマンスが大幅に向上します。 イメージを描画するには、を呼び出すときDraw
スタイルを指定します。
マスクされたイメージ リスト (CImageList) の背景色はいつでも設定でき、単色の背景に正しく描画されます。 背景色を CLR_NONE に設定すると、イメージは既定で透過的に描画されます。 イメージ リストの背景色を取得するには、 GetBkColor メンバー関数を使用します。
ILD_BLEND25とILD_BLEND50のスタイルにより、システムの強調表示の色でイメージがディザリングされます。 これらのスタイルは、マスクされたイメージを使用して、ユーザーが選択できるオブジェクトを表す場合に便利です。 たとえば、 ILD_BLEND50 スタイルを使用して、ユーザーがイメージを選択したときに画像を描画できます。
SRCCOPY
ラスター演算を使用して、マスクされていないイメージがコピー先のデバイス コンテキストにコピーされます。 イメージ内の色は、デバイス コンテキストの背景色に関係なく同じように表示されます。 Draw
で指定された描画スタイルは、マスクされていないイメージの外観にも影響しません。
Draw メンバー関数に加えて、別の関数 DrawIndirect はイメージをレンダリングする機能を拡張します。 DrawIndirect
は、 パラメーターとして IMAGELISTDRAWPARAMS 構造体を受け取ります。 この構造を使用すると、ラスター演算 (ROP) コードの使用など、現在のイメージのレンダリングをカスタマイズできます。 ROP コードの詳細については、「Windows SDK のラスター演算コード」および「ブラシとしてのビットマップ」を参照してください。