Comment cliper avec un Axis-Aligned Rectangle clip

Cette rubrique explique comment 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, voir Vue d’ensemble deLayers.

Pour cliper avec un rectangle de clip aligné sur l’axe

  1. Chargez l’image d’origine à partir d’une ressource. Pour plus d’informations sur la façon de charger une bitmap, consultez Comment charger une bitmap à partir d’une ressource.

  2. Appelez ID2D1RenderTarget::P ushAxisA alignClip 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 opAxisA alignClip 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. L’image bitmap à droite est la bitmap d’origine clippée dans le rectangle de clip aligné sur l’axe. Les dimensions sont (20, 20) à (100, 100).

illustration of a goldfish bitmap before and after the bitmap is clipped

Pour créer l’image clippée, créez une structure rectangle comme zone de découpage. Appelez PushAxisA alignClip avec la zone de découpage et peindre l’image d’origine. Appelez PopAxisA alignClip 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