Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Implementowanie dekodera składnika Windows Imaging Component (WIC) wymaga pisania dwóch klas. Interfejsy w tych klasach odpowiadają bezpośrednio obowiązkom dekodera opisanym w sekcji dekodowania części How The Windows Imaging Component Works.
Jedna z klas udostępnia usługi na poziomie kontenera i implementuje interfejs IWICBitmapDecoder. Jeśli format obrazu obsługuje metadane na poziomie kontenera, należy również zaimplementować interfejs IWICMetadataBlockReader w tej klasie. Zaleca się obsługę interfejsu IWICBitmapCodecProgressNotification zarówno w dekoderze, jak i koderze, aby zapewnić lepsze wrażenia użytkownika.
Druga klasa, którą zaimplementujesz, udostępnia usługi na poziomie ramki i wykonuje rzeczywiste dekodowanie bitów obrazu dla każdej ramki w kontenerze. Ta klasa implementuje interfejs IWICBitmapFrameDecode oraz interfejs IWICMetadataBlockReader. Jeśli piszesz dekoder dla formatu nieprzetworzonego, zaimplementujesz również interfejs IWICDevelopRaw w tej klasie. Oprócz wymaganych interfejsów zdecydowanie zaleca się zaimplementowanie interfejsu IWICBitmapSourceTransform w tej klasie, aby zapewnić jak najlepszą wydajność dla twojego formatu obrazu.
Jednym z elementów udostępnianych przez system WIC jest ImagingFactory. Do utworzenia różnych składników często używa się interfejsu IWICComponentFactory w tym obiekcie. Ponieważ jest on często używany, należy zachować odwołanie do niego jako właściwość składową zarówno w klasach dekodera, jak i kodera.
IWICImagingFactory* m_pImagingFactory = NULL;
IWICComponentFactory* m_pComponentFactory = NULL;
HRESULT hr;
hr = CoCreateInstance(CLSID_WICImagingFactory, NULL,
CLSCTX_INPROC_SERVER, IID_IWICImagingFactory,
(LPVOID*) m_pImagingFactory);
hr = m_pImagingFactory->QueryInterface(
IID_IWICComponentFactory, (void**)&m_pComponentFactory);
Tematy pokrewne
-
koncepcyjne