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.