Effect::GetAuxData メソッド (gdipluseffects.h)
Effect::GetAuxData は、Bitmap::ApplyEffect メソッドの以前の呼び出しによって作成された一連の参照テーブルへのポインターを取得します。
構文
VOID * GetAuxData();
戻り値
このメソッドは、 Bitmap::ApplyEffect の以前の呼び出しによって作成された一連の参照テーブルへのポインターを返します。 参照テーブルが使用できない場合、戻り値は NULL になります。
解説
効果をビットマップに適用するには、 Effect クラスのいずれかの子孫のインスタンスを作成し、その子孫のアドレスを Bitmap::ApplyEffect メソッドに渡します。 Effect の特定の子孫の場合、ApplyEffect は参照テーブルを作成し、それらのテーブルのアドレスを子孫オブジェクトに返します。 たとえば、 BrightnessContrast オブジェクトの参照テーブルを次のように取得できます。
- BrightnessContrast オブジェクトを作成し、その SetParameters メソッドを呼び出します。
- BrightnessContrast オブジェクトの Effect::UseAuxData メソッドに TRUE を渡します。
- BrightnessContrast オブジェクトのアドレスを Bitmap::ApplyEffect メソッドに渡します。
- BrightnessContrast オブジェクトの Effect::GetAuxData メソッドを呼び出して、ApplyEffect によって作成された参照テーブルへのポインターを取得します。 参照テーブルのバッファーは、ApplyEffect によって割り当てられます。バッファーを解放する責任はありません。
ApplyEffect は、 Effect クラスの次の子孫の参照テーブルのアドレスを返すことができます。
上の一覧のクラスに対して、 ApplyEffect は 4 つの参照テーブルを作成します。1 つは、それぞれ青、緑、赤、アルファ チャネル用です。 各参照テーブルは 256 バイトの配列であるため、テーブルのセット全体のサイズは 1024 バイトです。 テーブルは、青、緑、赤、アルファの順に格納されます。例
次のコードは、 BrightnessContrast オブジェクトのアドレスを Bitmap::ApplyEffect メソッドに渡します。 次に、ApplyEffect によって作成された青チャネル参照テーブルが出力されます。
Bitmap bm(L"Picture.bmp");
BrightnessContrastParams briConParams;
briConParams.brightnessLevel = 0;
briConParams.contrastLevel = 25;
BrightnessContrast briCon;
briCon.SetParameters(&briConParams);
briCon.UseAuxData(TRUE);
bm.ApplyEffect(&briCon, NULL);
VOID* data = briCon.GetAuxData();
// You know the size is 1024, but check to make sure.
INT size = briCon.GetAuxDataSize();
if(1024 != size || NULL == data)
return;
// Cast the data pointer as a ColorLUTParams pointer so that it
// will be easy to examine the individual tables.
ColorLUTParams* tables = (ColorLUTParams*)data;
// Print the lookup table for the blue channel.
for(UINT j = 0; j < 256; ++j)
{
printf("%u, %u\n", j, tables->lutB[j]);
}
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | gdipluseffects.h (Gdiplus.h を含む) |
Library | Gdiplus.lib |
[DLL] | Gdiplus.dll |