Метод Effect::GetAuxData (gdipluseffects.h)
Effect::GetAuxData получает указатель на набор таблиц подстановки, созданных при предыдущем вызове метода Bitmap::ApplyEffect.
Синтаксис
VOID * GetAuxData();
Возвращаемое значение
Этот метод возвращает указатель на набор таблиц подстановки, созданных при предыдущем вызове Bitmap::ApplyEffect. Если таблицы подстановки недоступны, возвращаемое значение равно NULL.
Комментарии
Эффект можно применить к точечным рисункам, создав экземпляр одного из потомков класса Effect и передав адрес этого потомка методу Bitmap::ApplyEffect . Для некоторых потомков Effect ApplyEffect создает таблицы подстановки и возвращает адрес этих таблиц в объект-потомок. Например, таблицы подстановки для объекта BrightnessContrast можно получить следующим образом:
- Создайте объект BrightnessContrast и вызовите его метод SetParameters .
- Передайте значение TRUE методу Effect::UseAuxData объекта BrightnessContrast .
- Передайте адрес объекта BrightnessContrast методу Bitmap::ApplyEffect .
- Вызовите метод Effect::GetAuxData объекта BrightnessContrast , чтобы получить указатель на таблицы подстановки, созданные ApplyEffect. Буфер для таблиц подстановки выделяется с помощью ApplyEffect; вы не несете ответственности за освобождение буфера.
ApplyEffect может возвращать адреса таблиц подстановки для следующих потомков класса Effect .
Для классов из предыдущего списка ApplyEffect создает четыре таблицы подстановки: по одной для синего, зеленого, красного и альфа-каналов. Каждая таблица подстановки представляет собой массив из 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 |
Header | gdipluseffects.h (включая Gdiplus.h) |
Библиотека | Gdiplus.lib |
DLL | Gdiplus.dll |