Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

CompositionMaskBrush Class

Definition

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Paints a SpriteVisual with a CompositionBrush with an opacity mask applied to it. The source of the opacity mask can be any CompositionBrush of type CompositionColorBrush, CompositionLinearGradientBrush, CompositionSurfaceBrush, CompositionEffectBrush or a CompositionNineGridBrush. The opacity mask must be specified as a CompositionSurfaceBrush.

public ref class CompositionMaskBrush sealed : CompositionBrush
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.LiftedContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class CompositionMaskBrush final : CompositionBrush
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.WindowsAppSDKContract, 65536)]
class CompositionMaskBrush final : CompositionBrush
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.LiftedContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CompositionMaskBrush : CompositionBrush
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.WindowsAppSDKContract), 65536)]
public sealed class CompositionMaskBrush : CompositionBrush
Public NotInheritable Class CompositionMaskBrush
Inherits CompositionBrush
Inheritance
Object Platform::Object IInspectable CompositionObject CompositionBrush CompositionMaskBrush
Attributes

Examples

Apply a star-shaped mask to an image.

private SpriteVisual CreateCircleImage(ICompositionSurface myImageSurface, ICompositionSurface myStarMaskSurface) 
{ 
 // Create SurfaceBrush with image surface and specify stretch and alignment 
 CompositionSurfaceBrush imageBrush = _compositor.CreateSurfaceBrush(myImageSurface); 
 imageBrush.HorizontalAlignmentRatio = 0.5f; 
 imageBrush.VerticalAlignmentRatio = 0.5f; 
 imageBrush.Stretch = CompositionStretch.UniformToFill; 

 // Create surface brush with opacity mask surface and specify stretch and alignment 
 CompositionSurfaceBrush starMaskBrush = _compositor.CreateSurfaceBrush(myStarMaskSurface); 
 starMaskBrush.Stretch = CompositionStretch.Uniform; 

 // SpriteVisual to be painted with masked content 
 SpriteVisual imageVisual = _compositor.CreateSpriteVisual(); 
 imageVisual.Size = new Vector2(200, 200); 

 // Create MaskBrush 
 CompositionMaskBrush maskBrush = _compositor.CreateMaskBrush(); 
 maskBrush.Source = imageBrush; // Set source to content that is to be masked 
 maskBrush.Mask = starMaskBrush; // Set mask to content that is the opacity mask 

 imageVisual.Brush = maskBrush; // Paint SpriteVisual with MaskBrush 

 return imageVisual; 
} 

Applying an opacity mask to solid color fill to create a shape; animate the transform property on the opacity mask CompositionSurfaceBrush to create a color bloom animation

private void CreateCircleMaskSprite(ICompositionSurface myCircleMaskSurface, ICompositionSurface myImageSurface)
{
 // SpriteVisual to be painted by MaskBrush
 _circleVisual = _compositor.CreateSpriteVisual();
 _circleVisual.Size = MyContainerGrid.RenderSize.ToVector2();

 // SurfaceBrush w/ image as MaskBrush.Source
 CompositionSurfaceBrush imageBrush = _compositor.CreateSurfaceBrush(myImageSurface);
 imageBrush.Stretch = CompositionStretch.UniformToFill;

 // SurfaceBrush w/ opacity mask surface as MaskBrush.Mask
 CompositionSurfaceBrush circleBrush = _compositor.CreateSurfaceBrush(myCircleMaskSurface);

 // Specify stretch and transform properties to scale and position brush for initial state
 circleBrush.Stretch = CompositionStretch.Uniform;
 circleBrush.CenterPoint = _circleVisual.Size / 2;
 circleBrush.Scale = new Vector2(0.5f);

 // Create MaskBrush
 CompositionMaskBrush maskBrush = _compositor.CreateMaskBrush();
 maskBrush.Source = imageBrush;
 maskBrush.Mask = circleBrush;
 _circleVisual.Brush = maskBrush;

 // Set SpriteVisual as child of XAML Grid
 ElementCompositionPreview.SetElementChildVisual(MyContainerGrid, _circleVisual);
}

private void BloomAnimation()
{
 // Create KeyFrame Animation to target Scale transform on SurfaceBrush 
 Vector2KeyFrameAnimation scaleAnimation = _compositor.CreateVector2KeyFrameAnimation();
 scaleAnimation.InsertKeyFrame(1.0f, new Vector2(2));
 scaleAnimation.Duration = TimeSpan.FromMilliseconds(500);

 var maskBrush = (CompositionMaskBrush)_circleVisual.Brush;
 var surfaceBrush = (CompositionSurfaceBrush) maskBrush.Mask;

 // Animate the Scale on the circle opacity mask
 surfaceBrush.StartAnimation("Scale", scaleAnimation); 
}

Applying a rounded rectangle mask to create a solid color rounded rectangle whose corner radius does not increase upon resizing (use CompositionNineGridBrush as input to a CompositionMaskBrush ).

private SpriteVisual CreateMaskedRoundedRectVisual(ICompositionSurface myRoundedRectMaskSurface)
{
 // ColorBrush to be set as MaskBrush.Source
 CompositionColorBrush colorBrush = _compositor.CreateColorBrush(Colors.Blue);

 // SurfaceBrush w/ opacity mask surface
 CompositionSurfaceBrush roundedRectBrush = _compositor.CreateSurfaceBrush(myRoundedRectMaskSurface);
 roundedRectBrush.Stretch = CompositionStretch.Fill; // stretch for center of nine-grid

 // NineGridBrush w/ insets on opacity mask surface
 CompositionNineGridBrush ninegridBrush = _compositor.CreateNineGridBrush();
 ninegridBrush.Source = roundedRectBrush;
 ninegridBrush.SetInsets(_cornerRadius); // the radius, in pixels, of the corner as specified on my opacity mask surface 

 // Create MaskBrush
 CompositionMaskBrush maskBrush = _compositor.CreateMaskBrush();
 maskBrush.Source = colorBrush;
 maskBrush.Mask = ninegridBrush;

 // Paint SpriteVisual with MaskBrush
 SpriteVisual sprite = _compositor.CreateSpriteVisual();
 sprite.Size = new Vector2(300, 200);
 sprite.Brush = maskBrush;
 return sprite;

}

Remarks

CompositionMaskBrush can not be set as the source parameter to a CompositionEffectBrush. If you wish to apply an IGraphicsEffect to your masked content, use a CompositionEffectBrush with the Composite effect instead.

Properties

Name Description
Comment

A string to associate with the CompositionObject.

(Inherited from CompositionObject)
Compositor

The Compositor used to create this CompositionObject.

(Inherited from CompositionObject)
DispatcherQueue

Gets the DispatcherQueue for the CompositionObject.

(Inherited from CompositionObject)
ImplicitAnimations

The collection of implicit animations attached to this object.

(Inherited from CompositionObject)
Mask

A brush that contains the opacity mask with which the Source brush's content is to be masked. Can be of type CompositionSurfaceBrush or CompositionNineGridBrush.

Properties

The collection of properties associated with the CompositionObject.

(Inherited from CompositionObject)
Source

A brush whose content is to be masked by the opacity mask. Can be of type CompositionSurfaceBrush, CompositionColorBrush, or CompositionNineGridBrush.

Methods

Name Description
Close()

Closes the CompositionObject and releases system resources.

(Inherited from CompositionObject)
Dispose()

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

(Inherited from CompositionObject)
PopulatePropertyInfo(String, AnimationPropertyInfo)

Defines a property that can be animated.

(Inherited from CompositionObject)
StartAnimation(String, CompositionAnimation, AnimationController)

Connects an animation with the specified property of the object and starts the animation.

(Inherited from CompositionObject)
StartAnimation(String, CompositionAnimation)

Connects an animation with the specified property of the object and starts the animation.

(Inherited from CompositionObject)
StartAnimationGroup(ICompositionAnimationBase)

Starts an animation group.

The StartAnimationGroup method on CompositionObject lets you start CompositionAnimationGroup. All the animations in the group will be started at the same time on the object.

(Inherited from CompositionObject)
StopAnimation(String)

Disconnects an animation from the specified property and stops the animation.

(Inherited from CompositionObject)
StopAnimationGroup(ICompositionAnimationBase)

Stops an animation group.

(Inherited from CompositionObject)
TryGetAnimationController(String)

Returns an AnimationController for the animation running on the specified property.

(Inherited from CompositionObject)

Applies to

See also


Feedback

Was this page helpful?