Interface IWICPalette (wincodec.h)
Expose des méthodes d’accès et de création d’une table de couleurs, principalement pour les formats de pixels indexés.
Héritage
L’interface IWICPalette hérite de l’interface IUnknown. IWICPalette a également les types de membres suivants :
Méthodes
L’interface IWICPalette a ces méthodes.
IWICPalette ::GetColorCount Récupère le nombre de couleurs dans le tableau de couleurs. |
IWICPalette ::GetColors Remplit le tableau de couleurs fourni avec les couleurs de la table de couleurs interne. Le tableau de couleurs doit être dimensionné en fonction des résultats retournés par GetColorCount. |
IWICPalette ::GetType Récupère le WICBitmapPaletteType qui décrit la palette. |
IWICPalette ::HasAlpha Indique si la palette contient une entrée non opaque (c’est-à-dire une entrée avec une valeur alpha inférieure à 1). |
IWICPalette ::InitializeCustom Initialise une palette aux entrées de couleur personnalisées fournies. |
IWICPalette ::InitializeFromBitmap Initialise une palette à l’aide d’une valeur optimisée calculée basée sur la bitmap de référence. |
IWICPalette ::InitializeFromPalette Initialisez la palette en fonction d’une palette donnée. |
IWICPalette ::InitializePredefined Initialise la palette dans l’une des palettes prédéfinies spécifiées par WICBitmapPaletteType et ajoute éventuellement une couleur transparente. |
IWICPalette ::IsBlackWhite Récupère une valeur qui indique si la palette est en noir et blanc. |
IWICPalette ::IsGrayscale Récupère une valeur qui indique si une palette est en nuances de gris. |
Remarques
Si WICBitmapPaletteType n’est pas WICBitmapPaletteCustom, les couleurs sont générées automatiquement en fonction du tableau ci-dessus. Si l’utilisateur modifie par la suite une entrée de palette de couleurs, WICBitmapPalette est défini sur Personnalisé par cette action.
Le paramètre fAddTransparentColord’InitializeFromBitmap ajoute une couleur transparente à la fin de la collection de couleurs si sa taille est inférieure à 256, sinon l’index 255 est remplacé par la couleur transparente. Si un type de palette prédéfini est utilisé, il passe à BitmapPaletteTypeCustom, car il ne correspond plus à la palette prédéfinie.
L’interface de palette est une interface d’imagerie auxiliaire en ce qu’elle ne concerne pas directement les bitmaps et les pixels ; il fournit plutôt une traduction de couleurs indexée pour les bitmaps indexées. Pour un format de pixel indexé avec M bits par pixels : (nombre de couleurs dans la palette) supérieur à 2^M.
Traditionnellement, l’opération de base de la palette consiste à fournir une traduction d’un index d’octets (ou plus petit) en une valeur de couleur de 32 bpp. Cela est souvent accompli par une table de 256 entrées de valeurs de couleur.
Exemples
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;
Dans cet exemple de code, WICColor est défini en tant que valeur UINT32 avec cette disposition :
0xAARRGGBB
Le type d’en-tête wincodec.h définit WICColor comme UINT32.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP avec SP2, Windows Vista [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows Server 2008 [applications de bureau | applications UWP] |
Plateforme cible | Windows |
En-tête | wincodec.h |