UIElement.RenderTransformOrigin 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置 RenderTransform 声明的任何可能呈现转换相对于 UIElement 边界的原点。
public:
property Point RenderTransformOrigin { Point get(); void set(Point value); };
Point RenderTransformOrigin();
void RenderTransformOrigin(Point value);
public Point RenderTransformOrigin { get; set; }
var point = uIElement.renderTransformOrigin;
uIElement.renderTransformOrigin = point;
Public Property RenderTransformOrigin As Point
<uiElement RenderTransformOrigin="x,y"/>
属性值
呈现器转换的原点。 默认值为值为 0,0 的 点 。
示例
此 XAML 示例演示如何在初始 XAML 中的 元素上设置 RenderTransformOrigin。 在最初默认 的 CompositeTransform 上运行的动画可以使用 RenderTransformOrigin 修改缩放和旋转转换,以应用于圆圈的中心,而不是默认的 0,0 坐标原点。 这使得它看起来像圆围绕其中心旋转并收缩到位。
<Ellipse x:Name="e1" RenderTransformOrigin=".5,.5" Height="100" Width="100" Loaded="e1_Loaded_1">
<Ellipse.Fill>
<LinearGradientBrush>
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="Green" Offset="1"/>
</LinearGradientBrush>
</Ellipse.Fill>
<Ellipse.RenderTransform>
<CompositeTransform />
</Ellipse.RenderTransform>
<Ellipse.Resources>
<Storyboard x:Name="esb1" >
<DoubleAnimation RepeatBehavior="3x" Duration="0:0:3" From="0" To="360" Storyboard.TargetName="e1"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" />
<DoubleAnimation RepeatBehavior="1x" Duration="0:0:7" From="1" To="0" Storyboard.TargetName="e1"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" />
<DoubleAnimation RepeatBehavior="1x" Duration="0:0:7" From="1" To="0" Storyboard.TargetName="e1"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" />
</Storyboard>
</Ellipse.Resources>
</Ellipse>
注解
RenderTransformOrigin 使你能够创建或更改转换对特定元素的影响,而无需更改 RenderTransform 转换的详细信息。 为 RenderTransformOrigin 指定的 Point 值不基于实际像素度量值。 相反,它是一个 逻辑点,其中值 0,0 表示整个 UIElement 呈现区域的左上角,1,1 表示右下角。 然后,通过将该值纳入 UIElement 的当前坐标空间,将其计算为 X,Y 坐标。
对于某些转换,原点并不重要。 例如,RenderTransformOrigin 不会更改应用于 RenderTransform 属性的 TranslateTransform 的行为。
某些转换类型具有自己的属性,用于指定转换的原点。 例如, RotateTransform 具有 CenterX 和 CenterY。 使用 UIElement 时,视觉设计工具有时会隐藏这些其他属性,以便仅对所有转换原点更改使用 RenderTransformOrigin,并将特定于转换的原点保留为默认值。 工具还可以将所有转换效果应用于 RenderTransform 的单个 CompositeTransform 值,而不是为特定转换定义 XAML 元素并创建 TransformGroup。 如果要编写自己的 XAML 或在代码中定义转换,则可以考虑遵循这些相同的做法,以便在对 RenderTransform 应用转换时始终使用 RenderTransformOrigin 而不是特定于转换的原点值,否则值将相互偏移。
一种常见方法是将 RenderTransformOrigin 设置为 0.5,0.5,这将原点置于元素中心。 然后,可以应用 RotateTransform 来围绕中心旋转元素。
将 FlowDirection 更改为 RightToLeft 更改 UIElement 的 RenderTransformOrigin 的 X 坐标的含义;0 将是右边缘。
使用 RenderTransform 和 RenderTransformOrigin 生成的一些相同的视觉效果也可以使用 投影 和 PlaneProjection 来实现。 例如,可以通过更改 PlaneProjection.RotationZ 来绕其中心旋转 UIElement。