Découpage (DirectComposition)

Notes

Pour les applications sur Windows 10, nous vous recommandons d’utiliser les API Windows.UI.Composition au lieu de DirectComposition. Pour plus d’informations, consultez Moderniser votre application de bureau à l’aide de la couche Visual.

Le découpage permet de révéler uniquement une partie d’un visuel ou d’une arborescence visuelle en limitant le rendu du visuel ou de l’arborescence à une zone rectangulaire particulière. Cette rubrique décrit la prise en charge de Microsoft DirectComposition pour les visuels de découpage. Il comprend les sections suivantes :

Rectangle d’élément

Un objet visuel a une propriété Clip qui définit une région rectangulaire, ou rectangle de clip, dans le contenu bitmap du visuel. Lorsque le visuel est rendu à l’écran, seule la partie du contenu bitmap qui se trouve à l’intérieur du rectangle de clip est dessinée à l’écran, tandis que le contenu qui s’étend en dehors du rectangle de clip est rogné (non dessiné). Par défaut, la propriété Clip inclut tout le contenu bitmap.

La propriété Clip d’un visuel s’applique à tous les visuels enfants et descendants. En d’autres termes, tout contenu enfant ou descendant qui se trouve en dehors des limites du rectangle d’clip du parent est également clippé.

DirectComposition applique la propriété Clip avant d’appliquer les propriétés OffsetX, OffsetY et 2D Transform, mais après l’application des propriétés Effect et 3D Transform. Cela signifie que les transformations 2D, OffsetX et OffsetY affectent à la fois le contenu visuel et le rectangle de clip. Tandis que les transformations et effets 3D ne s’appliquent pas au rectangle de clip.

Par exemple, lors de l’application d’un décalage ou d’une transformation 2D, le rectangle de clip est affecté par la matrice de transformation. Par conséquent, l’ajout d’un décalage et d’une rotation 2D (45 degrés) ainsi qu’un rectangle de clip d’angle arrondi entraîne les résultats suivants :

diagramme montrant l’effet d’une transformation 2d sur un rectangle de clip.

Lors de l’application d’une transformation 3D « dans » le rectangle d’clip, le rectangle d’élément n’est pas affecté par la matrice de transformation. Même lors de l’application d’une rotation autour de l’axe Z (identique à l’exemple précédent), le diagramme suivant est le résultat :

diagramme montrant qu’une transformation 3D n’affecte pas le clip rectangle (le visuel fait pivoter dans le clip).

Notez que le visuel a fait pivoter dans le clip, car la matrice 3D n’est pas appliquée au clip lui-même.

Si la propriété Clip est définie sur un rectangle vide, le visuel est entièrement clippé ; autrement dit, le visuel est inclus dans l’arborescence visuelle, mais il ne rend rien. Si vous ne souhaitez pas inclure un visuel particulier dans une composition, supprimez le visuel de l’arborescence visuelle au lieu de définir un rectangle de clip vide. La suppression du visuel améliore les performances.

Vous définissez la propriété Clip d’un visuel à l’aide de la méthode IDCompositionVisual::SetClip . Cette méthode inclut des surcharges qui vous permettent de définir la valeur de la propriété Clip sur un rectangle statique ou sur un objet clip. Utilisez un rectangle statique si vous n’avez pas besoin de modifier les dimensions du rectangle de clip pendant la durée de vie du visuel. Si vous devez modifier les dimensions ou animer le rectangle de clip, utilisez un objet clip.

Objet Clip

Un objet clip est un objet COM (Component Object Model) qui représente un rectangle de clip. Vous créez un objet clip à l’aide de la méthode IDCompositionDevice::CreateRectangleClip , puis utilisez l’interface IDCompositionRectangleClip de l’objet pour définir les propriétés de l’objet. Un objet clip nouvellement créé a les valeurs minimales possibles pour les propriétés Left et Top, et les valeurs maximales possibles pour les propriétés Right et Bottom, ce qui en fait un objet clip sans opération. En d’autres termes, l’objet représente un rectangle de clip qui inclurait l’intégralité du contenu bitmap d’un visuel.

Un objet clip comprend un ensemble de propriétés qui vous permettent de spécifier des coins arrondis pour l’objet clip. Les propriétés vous permettent de définir le rayon x et le rayon y de chaque coin de l’objet de découpage.

Rectangle de clip animé

Vous pouvez animer un rectangle de clip en appliquant des objets d’animation aux propriétés Left, Top, Right et Bottom d’un objet clip. Utilisez la méthode surchargée IDCompositionVisual::SetClip(IDCompositionClip) pour appliquer le rectangle de clip animé à la propriété Clip d’un visuel.

Pour plus d’informations sur les objets d’animation, consultez Animation.

DirectComposition Concepts

Comment cliper avec un objet Clip rectangle