UIElement.RenderTransformOrigin 属性

定义

获取或设置 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 坐标原点。 这使得它看起来像圆围绕其中心旋转并收缩到位。

注意

若要启动动画,需要从 资源 中检索它并调用 Begin;未显示该代码。

<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 具有 CenterXCenterY。 使用 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

适用于

另请参阅