Utilizzo delle interfacce visive e canvas XPS OM
In questo argomento viene descritto come usare le interfacce correlate all'area di disegno dell'API documento XPS in un file XPS OM.
Nome interfaccia | Interfacce figlio logiche | Descrizione |
---|---|---|
IXpsOMVisual |
IXpsOMCanvas IXpsOMGlyphs IXpsOMPath |
Classe di base delle interfacce che definiscono oggetti visivi, ad esempio testo e grafica. Gli oggetti visivi possono essere raccolti in un'interfaccia IXpsOMVisualCollection . |
IXpsOMCanvas |
IXpsOMCanvas IXpsOMGlyphs IXpsOMPath |
Raccolta di oggetti visivi che possono essere considerati come un singolo oggetto visivo. |
IXpsOMVisual è l'interfaccia di base; gli oggetti visibili di una pagina ereditano da esso. IXpsOMCanvas eredita da IXpsOMVisual e consente di raggruppare e agire su molti altri elementi visivi come un singolo elemento visivo. Ad esempio, è possibile usare un'interfaccia IXpsOMCanvas per creare un banner di pagina contenente una raccolta di elementi grafici e di testo. Un banner di questo tipo può contenere un logo, lo slogan dell'azienda e l'indirizzo dell'azienda. È possibile inserire tutti questi elementi nell'oggetto IXpsOMVisualCollection di un'interfaccia IXpsOMCanvas e quindi applicare una singola trasformazione all'oggetto IXpsOMCanvas per ridimensionarlo in una determinata pagina. Questa operazione è molto più semplice rispetto all'elaborazione e all'applicazione di una trasformazione a ogni singolo componente visivo nel banner.
È anche possibile usare un'area di disegno per ridimensionare il contenuto della pagina in base alle dimensioni correnti della pagina. A tale scopo, posizionare tutto il contenuto della pagina in un'unica area di disegno, quindi applicare la trasformazione appropriata per adattare l'area di disegno alle dimensioni correnti della pagina. Questo è anche molto più semplice rispetto al tentativo di ridimensionare ogni elemento visivo nella raccolta di oggetti visivi nella pagina.
Spostare il contenuto della pagina in un'area di disegno
Nell'esempio di codice seguente il contenuto di una pagina viene spostato in un'area di disegno.
HRESULT hr = S_OK;
IXpsOMVisualCollection *pageVisuals;
IXpsOMVisualCollection *canvasVisuals;
IXpsOMVisual *oneVisual;
IXpsOMCanvas *newPageCanvas;
UINT32 numVisuals = 0;
UINT32 thisVisual;
// get the page's visual collection
// and how many objects it contains
hr = page->GetVisuals( &pageVisuals );
hr = pageVisuals->GetCount ( &numVisuals );
// create the new canvas object and
// its (empty) visual collection
hr = xpsFactory->CreateCanvas ( &newPageCanvas );
hr = newPageCanvas->GetVisuals ( &canvasVisuals );
// go through the page's list of visual objects,
// move each one from the page's list to the canvas' list
// release the local pointer
// remove it from the page's collection
thisVisual = 0;
while (thisVisual < numVisuals) {
hr = pageVisuals->GetAt (0, &oneVisual);
hr = canvasVisuals->Append (oneVisual);
hr = pageVisuals->RemoveAt (0);
thisVisual++;
}
// the page's visual collection should be empty
hr = pageVisuals->GetCount (&numVisuals);
_ASSERT (0 == numVisuals);
// add the new canvas to the page's visual collection
pageVisuals->Append ( newPageCanvas );
Argomenti correlati
- [**Interfaccia IXpsOMCanvas**] (/windows/desktop/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomcanvas)
- [**Interfaccia IXpsOMVisual**] (/windows/desktop/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomvisual)
- [**Interfaccia IXpsOMVisualCollection**] (/windows/desktop/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomvisualcollection)