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 показано, как задать RenderTransformOrigin для элемента в исходном XAML. Анимация, которая выполняется по умолчанию CompositeTransform , может использовать RenderTransformOrigin для изменения масштаба и поворота преобразований для применения к центру кругов, а не к источнику координат по умолчанию 0,0. Это делает его похоже на то, что круг поворачивается вокруг своего центра и сжимается на месте.

Note

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

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

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

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

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

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

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

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