CImageList::DrawIndirect
更新 : 2007 年 11 月
イメージ リスト内のイメージを描画します。
BOOL DrawIndirect(
IMAGELISTDRAWPARAMS* pimldp
);
BOOL DrawIndirect(
CDC* pDC,
int nImage,
POINT pt,
SIZE sz,
POINT ptOrigin,
UINT fStyle = ILD_NORMAL,
DWORD dwRop = SRCCOPY,
COLORREF rgbBack = CLR_DEFAULT,
COLORREF rgbFore = CLR_DEFAULT,
DWORD fState = ILS_NORMAL,
DWORD Frame = 0,
COLORREF crEffect = CLR_DEFAULT
);
パラメータ
pimldp
描画操作に関する情報が格納された IMAGELISTDRAWPARAMS 構造体へのポインタ。pDC
描画先のデバイス コンテキストへのポインタ。処理終了後、この CDC オブジェクトを削除する必要があります。nImage
描画するイメージのインデックス (開始値 0)。pt
イメージを描画する x、y 座標が格納された POINT 構造体。sz
描画するイメージのサイズを示す SIZE 構造体。ptOrigin
イメージ自体を基準として描画操作の左上隅を指定する x、y 座標が格納された POINT 構造体。指定した x 座標よりも左、および y 座標よりも上にあるイメージのピクセルは描画されません。fStyle
描画スタイルを指定するフラグ。オーバーレイ イメージも指定できます。オーバーレイ イメージについては、「解説」を参照してください。MFC の既定の実装である ILD_NORMAL では、イメージ リストの背景色でイメージが描画されます。背景色を CLR_NONE にすると、マスクを使用して透過イメージが描画されます。その他の候補スタイルについては、IMAGELISTDRAWPARAMS 構造体の fStyle メンバを参照してください。
dwRop
ラスタ オペレーション コードを指定する値。これらのコードで描画元四角形の色データと描画先四角形の色データの混合方法を定義して、最終的な色を実現します。MFC の既定値である SRCCOPY では、描画元四角形を描画先四角形に直接コピーします。パラメータ fStyle で ILD_ROP フラグを指定しないと、このパラメータが無視されます。その他の候補値については、IMAGELISTDRAWPARAMS 構造体の dwRop メンバを参照してください。
rgbBack
イメージの背景色。既定は CLR_DEFAULT です。このパラメータでは、アプリケーション定義の RGB 値、または次のどちらかの値を指定できます。値
説明
CLR_DEFAULT
既定の背景色。イメージ リストの背景色でイメージが描画されます。
CLR_NONE
背景色なし。透過イメージが描画されます。
rgbFore
イメージの前景色。既定は CLR_DEFAULT です。このパラメータでは、アプリケーション定義の RGB 値、または次のどちらかの値を指定できます。値
説明
CLR_DEFAULT
既定の前景色。システムの強調表示色を前景色としてイメージが描画されます。
CLR_NONE
ディザ カラーなし。イメージは描画先のデバイス コンテキストの色と混合されます。
fStyle で ILD_BLEND25 フラグまたは ILD_BLEND50 フラグを指定したときに、このパラメータを使用します。
fState
描画の状態を示すフラグ。このメンバには、1 つ以上のイメージ リスト状態フラグを含むことができます。Frame
飽和効果とアルファ ブレンド効果の動作に影響します。このメンバを ILS_SATURATE で使用すると、アイコンのピクセルごとに RGB の 3 原色の各成分に追加される値が保持されます。
このメンバを ILS_APLHA で使用すると、アルファ チャネルの値が保持されます。値の範囲は 0 ~ 255 で、0 が完全な透明、255 が完全な不透明です。
crEffect
グロー効果とシャドウ効果に使用する COLORREF 値。
戻り値
イメージが描画できた場合は TRUE を返します。それ以外の場合は FALSE を返します。
解説
Win32 構造体を直接操作する場合は、最初の形式を使用します。MFC の既定の引数を利用する場合、または構造体を操作しない場合は、2 番目の形式を使用します。
オーバーレイ イメージはプライマリ イメージ上に描画されるイメージであり、このメンバ関数のパラメータ nImage で指定します。オーバーレイ マスクを描画するには、Draw メンバ関数を使用し、INDEXTOOVERLAYMASK マクロでオーバーレイ マスクの 1 から始まるインデックスを指定します。
使用例
int i, dx, cx, cy, nCount = m_myImageList.GetImageCount();
::ImageList_GetIconSize(m_myImageList, &cx, &cy);
// Draw the images of the image list on the DC.
for (dx = 0, i = 0; i < nCount; i++)
{
m_myImageList.DrawIndirect(&dc, i, CPoint(dx, 0),
CSize(cx, cy), CPoint(0, 0));
dx += cx;
}
必要条件
ヘッダー : afxcmn.h