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