Megosztás a következőn keresztül:


Az IWICMetadataBlockWriter implementálása

IWICMetadataBlockWriter

A keretszintű kódolási osztály implementálja ezt a felületet, hogy elérhetővé tegye az összes metaadatblokkot, és minden blokkhoz kérje a megfelelő metaadat-írót. Ha a képformátum támogatja a globális metaadatokat, az egyes kereteken kívül, ezt a felületet is implementálnia kell a tárolószintű kódoló osztályban. A metaadat-kezelők részletesebb ismertetéséhez tekintse meg a IWICMetadataBlockReader a WIC-Enabled dekóder implementálásáról szóló szakaszban található szakaszt.

interface IWICMetadataBlockWriter : IWICMetadataBlockReader
{
   // All methods required
   HRESULT InitializeFromBlockReader ( IWICMetadataBlockReader *pIMDBlockReader );
   HRESULT GetWriterByIndex ( UINT nIndex, IWICMetadataWriter **ppIMetadataWriter );
   HRESULT AddWriter (IWICMetadataWriter *pIMetadataWriter );
   HRESULT SetWriterByIndex ( UINT nIndex, IWICMetadataWriter *pIMetadataWriter );
   HRESULT RemoveWriterByIndex ( UINT nIndex );
}

InitializeFromBlockReader

InitializeFromBlockReader egy IWICMetadataBlockReader használatával inicializálja a blokkírót. A IWICMetadataBlockReader lekérheted a képet dekódoló dekóderből.

UINT blockCount = 0;
IWICMetadataReader* pMetadataReader = NULL;
IWICMetadataWriter** ppMetadataWriter = NULL;
HRESULT hr;

hr = m_pBlockReader->GetCount(&blockCount);
ppMetadataWriter = IWICMetadataWriter*[blockCount];

for (UINT x=0; x < blockCount; x++)
{
   hr = m_pBlockReader->GetReaderByIndex(&pMetadataReader);
   hr = m_pComponentFactory->CreateMetadataWriterFromReader(
         pMetadataReader, NULL, &ppMetadataWriter[x]);
}

Mivel az IWICMetadataBlockWriter inicializálásakor a IWICMetadataBlockReader egy metaadat-írót hoz létre minden metaadat-olvasóhoz, amelyet a IWICMetadataBlockReader objektum tesz elérhetővé, az alkalmazásnak nem kell kifejezetten írót kérnie minden egyes metaadatblokkhoz.

GetWriterByIndex

GetWriterByIndex a IWICMetadataWriter objektumot adja vissza az n. metaadatblokkhoz, ahol n a nIndex paraméterben átadott érték. Ha nincs regisztrált metaadat-író, amely képes kezelni az n. blokk metaadatainak típusát, az összetevő-előállító visszaadja az Ismeretlen metaadat-kezelőt, amely bináris nagy objektumként (BLOB) kezeli a metaadat-blokkot. Egy bitsorozatként szerializálja, anélkül, hogy elemezni próbálná.

Szövegíró hozzáadása

AddWriter lehetővé teszi, hogy a hívó új metaadat-írót adjon hozzá. Erre akkor van szükség, ha egy alkalmazás a meglévő metaadatblokkok bármelyikétől eltérő formátumú metaadatokat szeretne hozzáadni. Előfordulhat például, hogy egy alkalmazás hozzá szeretne adni néhány XMP-metaadatot. Ha nincs meglévő XMP-metaadat-blokk, az alkalmazásnak példányosítania kell egy XMP-metaadat-írót, és a AddWriter metódust kell használnia, hogy belefoglalja a metaadat-írók gyűjteménybe.

ÍróBeállításaIndexSzerint

SetWriterByIndex a gyűjtemény egy adott indexéhez tartozó metaadat-író hozzáadására szolgál. Ha egy metaadat-író jelenleg létezik az adott indexben, az újat kell lecserélnie.

ÍróEltávolításaIndexAlapján

RemoveWriterByIndex a metaadat-írók eltávolítására szolgál a gyűjteményből.

Koncepció

IWICBitmapFrameEncode implementálása

CODEC telepítési és regisztrációs folyamat

Hogyan írjunk egy WIC-Enabled CODEC-et

Windows képalkotó összetevő áttekintése