Интерфейс IWICPalette (wincodec.h)
Предоставляет методы для доступа к таблице цветов и создания ее, в основном для индексированных форматов пикселей.
Наследование
Интерфейс IWICPalette наследуется от интерфейса IUnknown . IWICPalette также имеет следующие типы элементов:
Методы
Интерфейс IWICPalette содержит следующие методы.
IWICPalette::GetColorCount Извлекает количество цветов в таблице цветов. |
IWICPalette::GetColors Заполняет предоставленный массив цветов цветами из внутренней таблицы цветов. Размер массива цветов должен соответствовать возвращаемым результатам getColorCount. |
IWICPalette::GetType Извлекает wicBitmapPaletteType, описывающий палитру. |
IWICPalette::HasAlpha Указывает, содержит ли палитра непрозрачную запись (то есть запись с альфа-значением меньше 1). |
IWICPalette::InitializeCustom Инициализирует палитру предоставленными пользовательскими записями цвета. |
IWICPalette::InitializeFromBitmap Инициализирует палитру с помощью вычисляемых оптимизированных значений на основе растрового изображения ссылки. |
IWICPalette::InitializeFromPalette Инициализируйте палитру на основе заданной палитры. |
IWICPalette::InitializePredefined Инициализирует палитру одной из предварительно определенных палитр, заданных WICBitmapPaletteType, и при необходимости добавляет прозрачный цвет. |
IWICPalette::IsBlackWhite Извлекает значение, указывающее, является ли палитра черно-белой. |
IWICPalette::IsGrayscale Извлекает значение, указывающее, имеет ли палитра оттенки серого. |
Комментарии
Если WICBitmapPaletteType не является WICBitmapPaletteCustom, цвета автоматически создаются на основе приведенной выше таблицы. Если пользователь впоследствии изменяет запись цветовой палитры, wicBitmapPalette будет установлен в Пользовательский с помощью этого действия.
Параметр fAddTransparentColorinitializeFromBitmap добавит прозрачный цвет в конец коллекции цветов, если его размер меньше 256, в противном случае индекс 255 будет заменен прозрачным цветом. Если используется предварительно определенный тип палитры, он изменится на BitmapPaletteTypeCustom, так как он больше не соответствует предопределенной палитре.
Интерфейс палитры является вспомогательным интерфейсом для создания изображений, так как он не относится непосредственно к растровым изображениям и пикселям; вместо этого он обеспечивает преобразование индексированного цвета для индексированных растровых изображений. Для индексированного формата пикселей с битами M на пиксели: (количество цветов в палитре) больше 2^M.
Обычно основной операцией палитры является перевод из байтового (или меньшего) индекса в значение цвета 32bpp. Это часто достигается с помощью 256 входной таблицы значений цветов.
Примеры
IWICImagingFactory *pFactory = NULL;
IWICBitmapDecoder *pDecoder = NULL;
IWICBitmapFrameDecode *pBitmapFrameDecode = NULL;
IWICPalette *pPalette = NULL;
UINT uiFrameCount = 0;
HRESULT hr = CoCreateInstance(
CLSID_WICImagingFactory,
NULL,
CLSCTX_INPROC_SERVER,
IID_IWICImagingFactory,
(LPVOID*)&pFactory
);
if (SUCCEEDED(hr))
{
hr = pFactory->CreateDecoderFromFilename(
L"test.gif",
NULL,
GENERIC_READ,
&pDecoder);
}
if (SUCCEEDED(hr))
{
hr = pDecoder->GetFrameCount(&uiFrameCount);
}
if (SUCCEEDED(hr) && (uiFrameCount > 0))
{
hr = pDecoder->GetFrame(0, &pBitmapFrameDecode);
if (SUCCEEDED(hr))
{
hr = pFactory->CreatePalette(&pPalette);
}
if (SUCCEEDED(hr))
{
hr = pBitmapFrameDecode->CopyPalette(pPalette);
}
if (SUCCEEDED(hr))
{
UINT uiColorCount = 0;
UINT uiActualColorCount = 0;
WICColor *pColors = NULL;
hr = pPalette->GetColorCount(&uiColorCount);
if (SUCCEEDED(hr) && (uiColorCount > 0))
{
pColors = new WICColor[uiColorCount];
if (pColors)
{
hr = pPalette->GetColors(uiColorCount, pColors, &uiActualColorCount);
// Do something with the colors here...
delete[] pColors;
}
else
{
hr = E_OUTOFMEMORY;
}
}
}
}
if (pPalette)
{
pPalette->Release();
}
if (pBitmapFrameDecode)
{
pBitmapFrameDecode->Release();
}
if (pDecoder)
{
pDecoder->Release();
}
if (pFactory)
{
pFactory->Release();
}
return hr;
В этом примере кода WICColor определяется как значение UINT32 с таким макетом:
0xAARRGGBB
Заголовок wincodec.h определяет тип WICColor как UINT32.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP с пакетом обновления 2 (SP2), Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | wincodec.h |