Partager via


Méthode IXpsOMObjectFactory ::CreateImageBrush (xpsobjectmodel.h)

Crée une interface IXpsOMImageBrush .

Syntaxe

HRESULT CreateImageBrush(
  [in]          IXpsOMImageResource *image,
  [in]          const XPS_RECT      *viewBox,
  [in]          const XPS_RECT      *viewPort,
  [out, retval] IXpsOMImageBrush    **imageBrush
);

Paramètres

[in] image

Interface IXpsOMImageResource qui contient l’image à utiliser comme image source du pinceau.

[in] viewBox

Le XPS_RECT structure qui définit la zone d’affichage, qui est la zone de l’image source utilisée par le pinceau.

[in] viewPort

La XPS_RECT structure qui définit la fenêtre d’affichage, qui est la zone couverte par la première vignette de la zone de sortie.

[out, retval] imageBrush

Pointeur vers la nouvelle interface IXpsOMImageBrush .

Valeur retournée

Cette méthode retourne un code HRESULT. Les valeurs possibles incluent, sans s’y limiter, celles du tableau qui suit. Pour plus d’informations sur les valeurs de retour de l’API de document XPS qui ne sont pas répertoriées dans ce tableau, consultez Erreurs de document XPS.

Code de retour Description
S_OK
S_OK
E_POINTER
image, viewBox, viewPort ou imageBrush a la valeur NULL.
E_INVALIDARG
viewBox ou viewPort contient un rectangle ou une valeur qui n’est pas valide.

Remarques

La zone d’affichage du pinceau spécifie la partie d’une image ou d’un visuel source à utiliser comme image de vignette.

Les coordonnées de la zone d’affichage du pinceau sont relatives au contenu source, de sorte que (0,0) spécifie l’angle supérieur gauche du contenu source. Pour les images, les dimensions spécifiées par la zone d’affichage du pinceau sont exprimées en unités de 1/96 ». Les coordonnées de pixel correspondantes dans l’image source sont calculées comme suit :

Dans l’illustration qui suit, l’image de gauche est un exemple d’image source, et à l’extrême droite se trouve le pinceau qui se produit après avoir sélectionné la zone d’affichage.

Illustration montrant un exemple de zone d’affichage Si la résolution de l’image source est de 96 par 96 points par pouce et que les dimensions de l’image sont de 96 par 96 pixels, les valeurs des champs dans le paramètre viewbox sont les suivantes :

Les valeurs de paramètre précédentes correspondent à l’image source comme suit :

SourceLeft = (96 × 48) / 96 = 48 pixels à partir du côté gauche
SourceTop = (96 × 24) / 96 = 24 pixels du haut
SourceWidth = (96 × 24) / 96 = 24 pixels de large
SourceHeight = (96 × 48) / 96 = 48 pixels de haut

Un pinceau d’image est un pinceau de vignette qui prend une image, ou une partie de celle-ci, transforme l’image pour créer une vignette, place la vignette résultante dans la fenêtre d’affichage (la géométrie de destination de la vignette dans la zone de sortie) et remplit la zone de sortie comme décrit par le mode vignette.

La fenêtre d’affichage est la zone couverte par la première vignette de la zone de sortie. L’image de fenêtre d’affichage est répétée dans toute la zone de sortie, comme décrit par le mode vignette.

L’illustration suivante montre comment un pinceau d’image est utilisé pour remplir une zone de sortie. De gauche à droite, l’image d’origine est transformée pour remplir la fenêtre d’affichage, puis placée dans la zone de fenêtre d’affichage de la zone de sortie, puis en mosaïque pour remplir la zone de sortie.

Figure montrant comment un pinceau de vignette remplit une géométrie L’exemple de code qui suit illustre la façon dont cette méthode est utilisée pour créer une interface.

IXpsOMImageBrush            *newInterface;
// The following values are defined outside of 
// this example.
//  IXpsOMImageResource     *image;
//  XPS_RECT                viewBox;
//  XPS_RECT                viewPort;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateImageBrush (
        image,
        &viewBox,
        &viewPort,
        &newInterface);

    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7, Windows Vista avec SP2 et Mise à jour de plateforme pour Windows Vista [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2008 R2, Windows Server 2008 avec SP2 et Platform Update pour Windows Server 2008 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête xpsobjectmodel.h

Voir aussi

IXpsOMImageBrush

IXpsOMImageResource

IXpsOMObjectFactory

IXpsOMTileBrush

XML Paper Specification

Erreurs de document XPS

XPS_RECT