IWICPalette-Schnittstelle (wincodec.h)
Macht Methoden zum Zugreifen auf und Erstellen einer Farbtabelle verfügbar, hauptsächlich für indizierte Pixelformate.
Vererbung
Die IWICPalette-Schnittstelle erbt von der IUnknown-Schnittstelle . IWICPalette verfügt auch über folgende Arten von Membern:
Methoden
Die IWICPalette-Schnittstelle verfügt über diese Methoden.
IWICPalette::GetColorCount Ruft die Anzahl der Farben in der Farbtabelle ab. |
IWICPalette::GetColors Füllt das angegebene Farbarray mit den Farben aus der internen Farbtabelle aus. Das Farbarray sollte entsprechend den Rückgabeergebnissen von GetColorCount bemessen werden. |
IWICPalette::GetType Ruft den WICBitmapPaletteType ab, der die Palette beschreibt. |
IWICPalette::HasAlpha Gibt an, ob die Palette einen Eintrag enthält, der nicht undurchsichtig ist (d. a. ein Eintrag mit einer Alpha, die kleiner als 1 ist). |
IWICPalette::InitializeCustom Initialisiert eine Palette mit den bereitgestellten benutzerdefinierten Farbeinträgen. |
IWICPalette::InitializeFromBitmap Initialisiert eine Palette mithilfe eines berechneten optimierten Wertes basierend auf der Referenzbitbit. |
IWICPalette::InitializeFromPalette Initialisieren Sie die Palette basierend auf einer bestimmten Palette. |
IWICPalette::InitializePredefined Initialisiert die Palette zu einer der vordefinierten Paletten, die von WICBitmapPaletteType angegeben werden, und fügt optional eine transparente Farbe hinzu. |
IWICPalette::IsBlackWhite Ruft einen Wert ab, der beschreibt, ob die Palette schwarzweiß ist. |
IWICPalette::IsGrayscale Ruft einen Wert ab, der beschreibt, ob eine Palette Graustufen aufweist. |
Hinweise
Wenn der WICBitmapPaletteType nicht WICBitmapPaletteCustom ist, werden die Farben basierend auf der obigen Tabelle automatisch generiert. Wenn der Benutzer anschließend einen Farbpaletteneintrag ändert, wird die WICBitmapPalette durch diese Aktion auf Benutzerdefiniert festgelegt.
Der fAddTransparentColor-Parameter von InitializeFromBitmap fügt am Ende der Farbauflistung eine transparente Farbe hinzu, wenn die Größe kleiner als 256 ist, andernfalls wird index 255 durch die transparente Farbe ersetzt. Wenn ein vordefinierter Palettentyp verwendet wird, ändert er sich in BitmapPaletteTypeCustom, da er nicht mehr mit der vordefinierten Palette übereinstimmt.
Die Palettenschnittstelle ist eine zusätzliche Bilderstellungsschnittstelle, da sie nicht direkt Bitmaps und Pixel betrifft. Sie bietet vielmehr eine indizierte Farbübersetzung für indizierte Bitmaps. Für ein indiziertes Pixelformat mit M-Bits pro Pixel: (Die Anzahl der Farben in der Palette) größer als 2^M.
Üblicherweise besteht der grundlegende Vorgang der Palette darin, eine Übersetzung aus einem Byteindex (oder einem kleineren) Index in einen 32bpp-Farbwert bereitzustellen. Dies wird häufig durch eine 256-Eintragstabelle mit Farbwerten erreicht.
Beispiele
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;
In diesem Beispielcode wird WICColor als UINT32-Wert mit folgendem Layout definiert:
0xAARRGGBB
Der wincodec.h-Headertyp definiert WICColor als UINT32.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP mit SP2, Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | wincodec.h |