Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describe cómo utilizar las interfaces relacionadas con el lienzo de la API de documentos XPS en un modelo de objetos XPS (OM XPS).
| Nombre de la interfaz | Interfaces secundarias lógicas | Descripción |
|---|---|---|
| IXpsOMVisual |
IXpsOMCanvas IXpsOMGlyphs IXpsOMPath |
Clase base de las interfaces que definen objetos visuales, como texto y gráficos. Los objetos visuales se pueden recopilar en una interfaz IXpsOMVisualCollection. |
| IXpsOMCanvas |
IXpsOMCanvas IXpsOMGlyphs IXpsOMPath |
Colección de objetos visuales que se pueden tratar como un único objeto visual. |
IXpsOMVisual es la interfaz base; los objetos visibles de una página heredan de él. IXpsOMCanvas hereda de IXpsOMVisual y permite agrupar y actuar muchos otros elementos visuales como un único elemento visual. Por ejemplo, podría usar una interfaz IXpsOMCanvas para crear un banner de página que contenga una colección de texto y elementos gráficos. Este banner puede contener un logotipo, el eslogan de la empresa y la dirección de la empresa. Puede colocar todos estos elementos en IXpsOMVisualCollection de una interfaz IXpsOMCanvas y, a continuación, aplicar una única transformación al objeto IXpsOMCanvas para cambiar su tamaño a una página determinada. Esto es mucho más sencillo que calcular y aplicar una transformación a cada componente visual individual en el banner.
También puede usar un lienzo para cambiar el tamaño del contenido de la página para ajustarse al tamaño de página actual. Para ello, coloque todo el contenido de la página en un solo lienzo y, a continuación, aplique la transformación adecuada para ajustar el lienzo al tamaño de página actual. Esto también es mucho más sencillo que intentar cambiar el tamaño de cada elemento visual de la colección de objetos visuales de la página.
Mover el contenido de la página a un lienzo
En el ejemplo de código siguiente se mueve el contenido de una página a un lienzo.
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 );
Temas relacionados
- [**Interfaz IXpsOMCanvas**](/windows/desktop/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomcanvas)
- [**IXpsOMVisual Interface**](/windows/desktop/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomvisual)
- [**IXpsOMVisualCollection Interfaz**](/windows/desktop/api/xpsobjectmodel/nn-xpsobjectmodel-ixpsomvisualcollection)