Antarmuka IWICPalette (wincodec.h)
Mengekspos metode untuk mengakses dan membangun tabel warna, terutama untuk format piksel terindeks.
Warisan
Antarmuka IWICPalette mewarisi dari antarmuka IUnknown . IWICPalette juga memiliki jenis anggota ini:
Metode
Antarmuka IWICPalette memiliki metode ini.
IWICPalette::GetColorCount Mengambil jumlah warna dalam tabel warna. |
IWICPalette::GetColors Mengisi array warna yang disediakan dengan warna dari tabel warna internal. Array warna harus berukuran sesuai dengan hasil yang dikembalikan dari GetColorCount. |
IWICPalette::GetType Mengambil WICBitmapPaletteType yang menjelaskan palet. |
IWICPalette::HasAlpha Menunjukkan apakah palet berisi entri yang tidak buram (yaitu, entri dengan alfa yang kurang dari 1). |
IWICPalette::InitializeCustom Menginisialisasi palet ke entri warna kustom yang disediakan. |
IWICPalette::InitializeFromBitmap Menginisialisasi palet menggunakan nilai komputasi yang dioptimalkan berdasarkan bitmap referensi. |
IWICPalette::InitializeFromPalette Menginisialisasi palet berdasarkan palet tertentu. |
IWICPalette::InitializePredefined Menginisialisasi palet ke salah satu palet yang telah ditentukan sebelumnya yang ditentukan oleh WICBitmapPaletteType dan secara opsional menambahkan warna transparan. |
IWICPalette::IsBlackWhite Mengambil nilai yang menjelaskan apakah palet berwarna hitam dan putih. |
IWICPalette::IsGrayscale Mengambil nilai yang menjelaskan apakah palet berukuran abu-abu. |
Keterangan
Jika WICBitmapPaletteType bukan WICBitmapPaletteCustom, warna secara otomatis dihasilkan berdasarkan tabel di atas. Jika pengguna kemudian mengubah entri palet warna, WICBitmapPalette diatur ke Kustom oleh tindakan tersebut.
Parameter initializeFromBitmapfAddTransparentColor akan menambahkan warna transparan ke akhir koleksi warna jika ukurannya jika kurang dari 256, jika tidak indeks 255 akan diganti dengan warna transparan. Jika jenis palet yang telah ditentukan sebelumnya digunakan, jenis palet akan berubah menjadi BitmapPaletteTypeCustom karena tidak lagi cocok dengan palet yang telah ditentukan sebelumnya.
Antarmuka palet adalah antarmuka pencitraan tambahan karena tidak secara langsung menyangkut bitmap dan piksel; melainkan menyediakan terjemahan warna terindeks untuk bitmap terindeks. Untuk format piksel terindeks dengan M bit per piksel: (Jumlah warna dalam palet) lebih besar dari 2^M.
Secara tradisional operasi dasar palet adalah memberikan terjemahan dari indeks byte (atau lebih kecil) ke dalam nilai warna 32bpp. Ini sering dicapai dengan 256 tabel entri nilai warna.
Contoh
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;
Dalam contoh kode ini, WICColor didefinisikan sebagai nilai UINT32 dengan tata letak ini:
0xAARRGGBB
Header wincodec.h type-mendefinisikan WICColor sebagai UINT32.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP dengan SP2, Windows Vista [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2008 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | wincodec.h |