다음을 통해 공유


IWICPalette 인터페이스(wincodec.h)

주로 인덱싱된 픽셀 형식에 대한 색 테이블에 액세스하고 빌드하기 위한 메서드를 노출합니다.

상속

IWICPalette 인터페이스는 IUnknown 인터페이스에서 상속됩니다. IWICPalette 에는 다음과 같은 유형의 멤버도 있습니다.

메서드

IWICPalette 인터페이스에는 이러한 메서드가 있습니다.

 
IWICPalette::GetColorCount

색 테이블의 색 수를 검색합니다.
IWICPalette::GetColors

제공된 색 배열을 내부 색 테이블의 색으로 채웁니다. GetColorCount의 반환 결과에 따라 색 배열의 크기를 조정해야 합니다.
IWICPalette::GetType

색상표를 설명하는 WICBitmapPaletteType을 검색합니다.
IWICPalette::HasAlpha

팔레트에 불투명하지 않은 항목(즉, 알파가 1보다 작은 항목)이 포함되어 있는지 여부를 나타냅니다.
IWICPalette::InitializeCustom

제공된 사용자 지정 색 항목에 대한 팔레트를 초기화합니다.
IWICPalette::InitializeFromBitmap

참조 비트맵을 기반으로 하는 계산 최적화 값을 사용하여 팔레트를 초기화합니다.
IWICPalette::InitializeFromPalette

지정된 색상표를 기반으로 팔레트를 초기화합니다.
IWICPalette::InitializePredefined

색상표를 WICBitmapPaletteType에 지정된 미리 정의된 색상표 중 하나로 초기화하고 필요에 따라 투명한 색을 추가합니다.
IWICPalette::IsBlackWhite

색상표가 흑백인지 여부를 설명하는 값을 검색합니다.
IWICPalette::IsGrayscale

색상표가 회색조인지 여부를 설명하는 값을 검색합니다.

설명

WICBitmapPaletteTypeWICBitmapPaletteCustom이 아닌 경우 색은 위의 표에 따라 자동으로 생성됩니다. 사용자가 이후에 색상표 항목을 변경하는 경우 WICBitmapPalette는 해당 작업에 의해 사용자 지정으로 설정됩니다.

InitializeFromBitmapfAddTransparentColor 매개 변수는 크기가 256보다 작은 경우 색 컬렉션의 끝에 투명한 색을 추가합니다. 그렇지 않으면 인덱스 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 헤더 형식은 WICColorUINT32로 정의합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 WINDOWS XP SP2, Windows Vista [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 wincodec.h