Comment découper avec un rectangle de découpage Axis-Aligned

Cette rubrique explique comment découper une image avec un rectangle de découpage aligné sur l’axe. Cette approche produit uniquement des clips rectangulaires, car les limites de contenu sont alignées sur l’axe du rectangle. Cette approche est plus efficace que l’utilisation de couches avec les limites du contenu. Pour plus d’informations, consultezvue d’ensemble des couches.

Pour découper avec un rectangle de découpage aligné sur l’axe

  1. Chargez l’image d’origine à partir d’une ressource. Pour plus d’informations sur le chargement d’une image bitmap, consultez Comment charger une image bitmap à partir d’une ressource.

  2. Appelez ID2D1RenderTarget ::P ushaxisalignedclip pour spécifier un rectangle. Les commandes de rendu sont découpées dans le rectangle.

  3. Paint l’image d’origine.

  4. Appelez ID2D1RenderTarget ::P opaxisalignedclip pour supprimer le dernier élément aligné sur l’axe de la cible de rendu.

Par exemple, dans l’illustration suivante, le bitmap d’origine sur la gauche est 200 * 130 pixels. L’image bitmap de droite est la bitmap d’origine découpée vers le rectangle de découpage aligné sur l’axe. Les dimensions sont (20, 20) à (100, 100).

illustration d’une image bitmap Goldfish avant et après le découpage de la bitmap

Pour créer l’image découpée, créez une structure Rectangle comme zone de découpage. Appelez PushAxisAlignedClip avec la zone de découpage et peignez l’image d’origine. Appelez PopAxisAlignedClip pour supprimer le clip de la cible de rendu. Le code suivant montre comment procéder.

pRT->PushAxisAlignedClip(
    D2D1::RectF(20, 20, 100, 100),
    D2D1_ANTIALIAS_MODE_PER_PRIMITIVE
    );

pRT->FillRectangle(D2D1::RectF(0, 0, 200, 133), m_pOriginalBitmapBrush);
pRT->PopAxisAlignedClip();

Référence Direct2D