CompositionSurfaceBrush 类

定义

使用 ICompositionSurface 中的像素绘制 SpriteVisual

public ref class CompositionSurfaceBrush sealed : CompositionBrush
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 131072)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class CompositionSurfaceBrush final : CompositionBrush
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 131072)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CompositionSurfaceBrush : CompositionBrush
Public NotInheritable Class CompositionSurfaceBrush
Inherits CompositionBrush
继承
Object Platform::Object IInspectable CompositionObject CompositionBrush CompositionSurfaceBrush
属性

Windows 要求

设备系列
Windows 10 (在 10.0.10586.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v2.0 中引入)

示例

在 SpriteVisual 上绘制图像资产

private SpriteVisual CreateImageVisual(ICompositionSurface imageSurface)
{
  SpriteVisual imageVisual = _compositor.CreateSpriteVisual();
  imageVisual.Size = new Vector2(300, 200);

  CompositionSurfaceBrush imageBrush = _compositor.CreateSurfaceBrush();
  imageBrush.Surface = imageSurface;

  // specify CompositionStretch on SurfaceBrush and horizontal/vertical alignment
  imageBrush.Stretch = CompositionStretch.UniformToFill;
  imageBrush.HorizontalAlignmentRatio = 0.5f;
  imageBrush.VerticalAlignmentRatio = 0.5f;

  imageVisual.Brush = imageBrush;
  return imageVisual;
}

将自定义缩放转换动画应用于 CompositionSurfaceBrush

private void AnimateBrushScale(SpriteVisual imageVisual)
{
  CompositionSurfaceBrush imageBrush = (CompositionSurfaceBrush)imageVisual.Brush;

  // set brush CenterPoint at the center of the content painted onto imageVisual 
  imageBrush.CenterPoint = imageVisual.Size / 2;

  // set up scale keyframe animation
  CompositionScopedBatch batch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
  Vector2KeyFrameAnimation scaleAnimation = _compositor.CreateVector2KeyFrameAnimation();
  scaleAnimation.InsertKeyFrame(1.0f, new Vector2(1.5f));
  scaleAnimation.Duration = TimeSpan.FromMilliseconds(500);

  // start animation on CompositionSurfaceBrush.Scale
  imageBrush.StartAnimation("Scale", scaleAnimation);

  // end animation batch and fire completion event
  batch.End();
  batch.Completed += ScaleAnimationBatch_Completed;
} 

注解

Stretch 属性与 HorizontalAlignmentRatio 和 VerticalAlignmentRatio 属性结合使用,用于指定在绘制到 SpriteVisual 上时 CompositionSurfaceBrush 内容的比例和位置。

CompositionSurfaceBrush 还具有以下属性,用于启用自定义转换:

  • AnchorPoint
  • CenterPoint
  • Offset
  • RotationAngle
  • RotationAngleInDegrees
  • 缩放
  • TransformMatrix

CompositionSurfaceBrush 上的转换操作顺序如下:

  1. CompositionSurfaceBrush 的内容将拉伸并对齐到 SpriteVisual (请参阅 StretchHorizontalAlignmentRatioVerticalAlignmentRatio 属性) 。

  2. 将应用 CompositionSurfaceBrush 上设置的任何其他转换属性。

    因此,应用于 CompositionSurfaceBrush 的自定义转换在画笔绘制到的 SpriteVisual 的坐标空间中进行评估。 例如,将 Vector2 的偏移量 (设置为 100, 0) 将画笔的拉伸和对齐内容相对于绘制到它的 SpriteVisual 的左边缘向右偏移 100 个单位。

版本历史记录

Windows 版本 SDK 版本 已添加值
1607 14393 AnchorPoint
1607 14393 CenterPoint
1607 14393 Offset
1607 14393 RotationAngle
1607 14393 RotationAngleInDegrees
1607 14393 缩放
1607 14393 TransformMatrix
1903 18362 SnapToPixels

属性

AnchorPoint

要定位在画笔偏移量的画笔上的点。 值根据 SpriteVisual 的大小进行规范化。

BitmapInterpolationMode

指定用于内插 ICompositionSurface 中的像素的算法,这些像素不会形成到 SpriteVisual (上的像素的一对一映射,就像在拉伸、缩放、旋转和其他) 转换下可能发生的那样。

CenterPoint

旋转和缩放画笔的点。

Comment

要与 CompositionObject 关联的字符串。

(继承自 CompositionObject)
Compositor

用于创建此 CompositionObject 的 Compositor

(继承自 CompositionObject)
Dispatcher

CompositionObject 的调度程序。

(继承自 CompositionObject)
DispatcherQueue

获取 CompostionObject 的 DispatcherQueue

(继承自 CompositionObject)
HorizontalAlignmentRatio

控制内容垂直轴相对于 SpriteVisual 的垂直轴的位置。 该值从 0.0f 固定到 1.0f,其中 0.0f 表示左垂直边缘,1.0f 表示 SpriteVisual 的右垂直边缘。

ImplicitAnimations

附加到此对象的隐式动画集合。

(继承自 CompositionObject)
Offset

画笔相对于其 SpriteVisual 的偏移量。

Properties

CompositionObject 关联的属性的集合。

(继承自 CompositionObject)
RotationAngle

画笔的旋转角度(以弧度为单位)。

RotationAngleInDegrees

画笔的旋转角度(以度为单位)。

Scale

要应用于画笔的刻度。

SnapToPixels

获取或设置一个值,该值指示表面画笔是否与像素对齐。

Stretch

控制应用于 ICompositionSurface 内容(相对于正在绘制的 SpriteVisual 的大小)的缩放。

Surface

CompositionSurfaceBrush 关联的 ICompositionSurface

TransformMatrix

要应用于画笔的转换矩阵。

VerticalAlignmentRatio

控制内容水平轴相对于 SpriteVisual 的水平轴的位置。 该值从 0.0f 固定到 1.0f,其中 0.0f 表示顶部水平边缘,1.0f 表示 SpriteVisual 的底部水平边缘。 默认值为 0.5f。

方法

Close()

关闭 CompositionObject 并释放系统资源。

(继承自 CompositionObject)
ConnectAnimation(String, CompositionAnimation)

连接和动画。

(继承自 CompositionObject)
DisconnectAnimation(String)

断开动画的连接。

(继承自 CompositionObject)
Dispose()

执行与释放或重置非托管资源关联的应用程序定义的任务。

(继承自 CompositionObject)
PopulatePropertyInfo(String, AnimationPropertyInfo)

定义可进行动画处理的属性。

(继承自 CompositionObject)
StartAnimation(String, CompositionAnimation, AnimationController)

使用 对象的指定属性连接动画并启动动画。

(继承自 CompositionObject)
StartAnimation(String, CompositionAnimation)

使用 对象的指定属性连接动画并启动动画。

(继承自 CompositionObject)
StartAnimationGroup(ICompositionAnimationBase)

启动动画组。

CompositionObject 上的 StartAnimationGroup 方法可用于启动 CompositionAnimationGroup。 组中的所有动画将同时在 对象上启动。

(继承自 CompositionObject)
StopAnimation(String)

断开动画与指定属性的连接并停止动画。

(继承自 CompositionObject)
StopAnimationGroup(ICompositionAnimationBase)

停止动画组。

(继承自 CompositionObject)
TryGetAnimationController(String)

返回指定属性上运行的动画的 AnimationController。

(继承自 CompositionObject)

适用于

另请参阅