共用方式為


IWICPalette 介面 (wincodec.h)

公開存取及建置色彩數據表的方法,主要是針對索引圖元格式。

繼承

IWICPalette 介面繼承自 IUnknown 介面。 IWICPalette 也有下列類型的成員:

方法

IWICPalette 介面具有這些方法。

 
IWICPalette::GetColorCount

擷取色彩表格中的色彩數目。
IWICPalette::GetColors

使用內部色彩數據表中的色彩填入提供的色彩陣列。 色彩數位應該根據 GetColorCount 的傳回結果來重設大小。
IWICPalette::GetType

擷取描述調色盤的 WICBitmapPaletteType。
IWICPalette::HasAlpha

指出調色盤是否包含非不透明 (的專案,也就是具有小於 1) alpha 的專案。
IWICPalette::InitializeCustom

將調色盤初始化為提供的自訂色彩專案。
IWICPalette::InitializeFromBitmap

使用以參考位圖為基礎的計算優化值,初始化調色盤。
IWICPalette::InitializeFromPalette

根據指定的調色盤初始化調色盤。
IWICPalette::InitializePredefined

將調色盤初始化為 WICBitmapPaletteType 所指定的其中一個預先定義的調色盤,並選擇性地新增透明色彩。
IWICPalette::IsBlackWhite

擷取值,這個值描述調色盤是否為黑色和白色。
IWICPalette::IsGrayscale

擷取值,這個值描述調色盤是否為灰階。

備註

如果 WICBitmapPaletteType 不是 WICBitmapPaletteCustom,則會根據上表自動產生色彩。 如果使用者後續變更調色盤專案,WICBitmapPalette 會設定為該動作的 [自定義]。

如果大小小於 256,InitializeFromBitmapfAddTransparentColor 參數會將透明色彩新增至色彩集合的結尾,否則索引 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 搭配 SP2、Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 wincodec.h