ID2D1Brush ::SetTransform(constD2D1_MATRIX_3X2_F&), méthode (d2d1.h)

Définit la transformation appliquée au pinceau.

Syntaxe

void SetTransform(
  [ref] const D2D1_MATRIX_3X2_F & transform
);

Paramètres

[ref] transform

Type : const D2D1_MATRIX_3X2_F

Transformation à appliquer à ce pinceau.

Valeur de retour

None

Remarques

Lorsque vous peignez avec un pinceau, il peint dans l’espace de coordonnées de la cible de rendu. Les pinceaux ne se positionnent pas automatiquement pour s’aligner sur l’objet peint ; par défaut, ils commencent à peindre à l’origine (0, 0) de la cible de rendu.

Vous pouvez « déplacer » le dégradé défini par un objet ID2D1LinearGradientBrush vers une zone cible en définissant son point de départ et son point de terminaison. De même, vous pouvez déplacer le dégradé défini par un ID2D1RadialGradientBrush en modifiant son centre et son rayon.

Pour aligner le contenu d’un objet ID2D1BitmapBrush sur la zone en cours de peinture, vous pouvez utiliser la méthode SetTransform pour traduire la bitmap à l’emplacement souhaité. Cette transformation affecte uniquement le pinceau ; elle n’affecte aucun autre contenu dessiné par la cible de rendu.

Les illustrations suivantes montrent l’effet de l’utilisation d’un objet ID2D1BitmapBrush pour remplir un rectangle situé à (100, 100). L’illustration de gauche montre le résultat du remplissage du rectangle sans transformer le pinceau : la bitmap est dessinée à l’origine de la cible de rendu. Par conséquent, seule une partie de la bitmap apparaît dans le rectangle.

L’illustration de droite montre le résultat de la transformation de l’ID2D1BitmapBrush afin que son contenu soit décalé de 50 pixels vers la droite et de 50 pixels vers le bas. La bitmap remplit maintenant le rectangle.

Illustration de deux carrés, l’un peint avec une bitmap sans pinceau transformé et l’autre peint avec un pinceau transformé

Exemples

Les exemples de code suivants montrent comment créer la transformation présentée dans le diagramme de droite de l’illustration précédente. Appliquez d’abord une traduction à l’objet ID2D1BitmapBrush, en déplaçant le pinceau de 50 pixels le long de l’axe X et de 50 pixels vers le bas le long de l’axe y. Utilisez ensuite id2D1BitmapBrush pour remplir le rectangle qui a le coin supérieur gauche à (100, 100) et l’angle inférieur droit à (200, 200).

// Create the bitmap to be used by the bitmap brush.
if (SUCCEEDED(hr))
{
    hr = LoadResourceBitmap(
        m_pRenderTarget,
        m_pWICFactory,
        L"FERN",
        L"Image",
        &m_pBitmap
        );
   
}

if (SUCCEEDED(hr))
{
    hr = m_pRenderTarget->CreateBitmapBrush(
        m_pBitmap,
        &m_pBitmapBrush
        );
}

D2D1_RECT_F rcTransformedBrushRect = D2D1::RectF(100, 100, 200, 200);


 // Demonstrate the effect of transforming a bitmap brush.
 m_pBitmapBrush->SetTransform(
     D2D1::Matrix3x2F::Translation(D2D1::SizeF(50,50))
     );

 // To see the content of the rcTransformedBrushRect, comment
 // out this statement.
 m_pRenderTarget->FillRectangle(
     &rcTransformedBrushRect, 
     m_pBitmapBrush
     );

 m_pRenderTarget->DrawRectangle(rcTransformedBrushRect, m_pBlackBrush, 1, NULL);

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 d2d1.h
Bibliothèque D2d1.lib
DLL D2d1.dll

Voir aussi

Vue d’ensemble des pinceaux

ID2D1Brush