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.