Поделиться через


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"/>

Значение свойства

Исходная точка преобразования отрисовки. Значение по умолчанию — Point со значением 0,0.

Примеры

В этом примере XAML показано, как задать RenderTransformOrigin для элемента в начальном коде XAML. Анимация, выполняемая на первоначальном объекте 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 . Значение Point , указанное для RenderTransformOrigin, не основано на фактических мерах пикселей. Вместо этого это логическая точка, где значение 0,0 относится к верхнему левому углу общей области визуализации UIElement , а 1,1 — к правому нижнему углу. Затем значение вычисляется в координате X,Y путем его разбиения в текущее пространство координат UIElement.

Для некоторых преобразований источник не имеет значения. Например, RenderTransformOrigin не изменяет поведение TranslateTransform , примененного к свойству RenderTransform .

Некоторые типы преобразования имеют собственные свойства для указания источника преобразования. Например, в RotateTransform есть CenterX и CenterY. При работе с UIElement средства визуального проектирования иногда скрывают эти другие свойства, чтобы использовать RenderTransformOrigin только для всех изменений источника преобразования и оставить источники, относящиеся к преобразованию, в качестве значений по умолчанию. Средства также могут применять все эффекты преобразования к одному значению CompositeTransform для RenderTransform, а не определять элементы XAML для конкретных преобразований и создавать TransformGroup. Если вы пишете собственный код XAML или определяете преобразования в коде, вы можете следовать тем же методикам, чтобы всегда использовать RenderTransformOrigin, а не значения источника, относящиеся к преобразованию, если вы применяете преобразования для RenderTransform, в противном случае значения будут смещать друг друга.

Распространенный способ — задать для RenderTransformOrigin значение 0,5,0,5, которое помещает источник в центр элемента. Затем можно применить RotateTransform , чтобы повернуть элемент по центру.

Изменение flowDirection на RightToLeft изменяет значение координаты X RenderTransformOrigin для UIElement; 0 будет правым краем.

Некоторые из этих визуальных эффектов, которые можно создать с помощью RenderTransform и RenderTransformOrigin, также можно достичь с помощью проекции и PlaneProjection. Например, можно повернуть ЭЛЕМЕНТ UIElement вокруг его центра, изменив PlaneProjection.RotationZ.

Применяется к

См. также раздел