Interface IWICPalette (wincodec.h)
Expõe métodos para acessar e criar uma tabela de cores, principalmente para formatos de pixel indexados.
Herança
A interface IWICPalette herda da interface IUnknown . IWICPalette também tem estes tipos de membros:
Métodos
A interface IWICPalette tem esses métodos.
IWICPalette::GetColorCount Recupera o número de cores na tabela de cores. |
IWICPalette::GetColors Preenche a matriz de cores fornecida com as cores da tabela de cores interna. A matriz de cores deve ser dimensionada de acordo com os resultados de retorno de GetColorCount. |
IWICPalette::GetType Recupera o WICBitmapPaletteType que descreve a paleta. |
IWICPalette::HasAlpha Indica se a paleta contém uma entrada que não é opaca (ou seja, uma entrada com um alfa menor que 1). |
IWICPalette::InitializeCustom Inicializa uma paleta para as entradas de cores personalizadas fornecidas. |
IWICPalette::InitializeFromBitmap Inicializa uma paleta usando valores otimizados computados com base no bitmap de referência. |
IWICPalette::InitializeFromPalette Inicialize a paleta com base em uma determinada paleta. |
IWICPalette::InitializePredefined Inicializa a paleta para uma das paletas predefinidas especificadas por WICBitmapPaletteType e, opcionalmente, adiciona uma cor transparente. |
IWICPalette::IsBlackWhite Recupera um valor que descreve se a paleta é preta e branca. |
IWICPalette::IsGrayscale Recupera um valor que descreve se uma paleta é em escala de cinza. |
Comentários
Se o WICBitmapPaletteType não for WICBitmapPaletteCustom, as cores serão geradas automaticamente com base na tabela acima. Se o usuário alterar posteriormente uma entrada de paleta de cores, WICBitmapPalette será definido como Personalizado por essa ação.
O parâmetro fAddTransparentColor de InitializeFromBitmap adicionará uma cor transparente ao final da coleção de cores se seu tamanho for menor que 256, caso contrário, o índice 255 será substituído pela cor transparente. Se um tipo de paleta predefinido for usado, ele será alterado para BitmapPaletteTypeCustom, pois não corresponde mais à paleta predefinida.
A interface de paleta é uma interface auxiliar de geração de imagens, pois não se refere diretamente a bitmaps e pixels; em vez disso, fornece tradução de cores indexada para bitmaps indexados. Para um formato de pixel indexado com M bits por pixels: (o número de cores na paleta) maior que 2^M.
Tradicionalmente, a operação básica da paleta é fornecer uma tradução de um índice de bytes (ou menor) em um valor de cor de 32bpp. Isso geralmente é feito por uma tabela de 256 entradas de valores de cor.
Exemplos
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;
Neste código de exemplo, WICColor é definido como um valor UINT32 com este layout:
0xAARRGGBB
O tipo de cabeçalho wincodec.h define WICColor como UINT32.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP com SP2, Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | wincodec.h |