Guide pratique pour découper avec un Axis-Aligned Clip Rectangle

Cette rubrique explique comment découper une image avec un rectangle de clip 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 de contenu. Pour plus d’informations, consultezVue d’ensemble des couches.

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

  1. Chargez l’image d’origine à partir d’une ressource. Pour plus d’informations sur le chargement d’une bitmap, consultez Guide pratique pour charger une 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. Peindre l’image d’origine.

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

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

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

Pour créer l’image clippée, créez une structure rectangle en tant que 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