Partilhar via


UIElement.RenderTransformOrigin Propriedade

Definição

Obtém ou define o ponto de origem de qualquer possível transformação de renderização declarada por RenderTransform, em relação aos limites do 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"/>

Valor da propriedade

O ponto de origem da transformação de renderização. O valor padrão é um Point com o valor 0,0.

Exemplos

Este exemplo XAML mostra como definir RenderTransformOrigin no elemento no XAML inicial. Uma animação executada em um CompositeTransform inicialmente padrão pode usar o RenderTransformOrigin para modificar as transformações de escala e rotação a serem aplicadas ao centro dos círculos em vez da origem de coordenada padrão de 0,0. Isso faz parecer que o círculo está girando em torno de seu centro e encolhendo no lugar.

Observação

Para iniciar a animação, você precisaria recuperá-la de Recursos e chamar Begin; esse código não é mostrado.

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

Comentários

RenderTransformOrigin permite que você crie ou altere o efeito de uma transformação em um elemento específico sem precisar alterar as especificidades da transformação RenderTransform . O valor point especificado para RenderTransformOrigin não é baseado em medidas reais de pixel. Em vez disso, é um ponto lógico, em que um valor de 0,0 se refere ao canto superior esquerdo da área de renderização UIElement geral e 1,1 se refere ao canto inferior direito. Em seguida, o valor é avaliado em uma coordenada X,Y, fatorando-o no espaço de coordenadas atual do UIElement.

Para algumas transformações, a origem não importa. Por exemplo, RenderTransformOrigin não alterará o comportamento de um TranslateTransform aplicado à propriedade RenderTransform .

Alguns tipos de transformação têm suas próprias propriedades para especificar a origem da transformação. Por exemplo, RotateTransform tem CenterX e CenterY. Quando você está trabalhando com um UIElement, as ferramentas de design visual às vezes ocultam essas outras propriedades para que você use Apenas RenderTransformOrigin para todas as alterações de origem da transformação e deixe as origens específicas da transformação como padrões. As ferramentas também podem aplicar todos os efeitos de transformação a um único valor CompositeTransform para RenderTransform, em vez de definir elementos XAML para as transformações específicas e fazer um TransformGroup. Se você estiver escrevendo seu próprio XAML ou definindo transformações no código, considere seguir essas mesmas práticas para que você sempre use RenderTransformOrigin em vez dos valores de origem específicos da transformação se estiver aplicando transformações para RenderTransform, caso contrário, os valores serão deslocados uns aos outros.

Uma técnica comum é definir RenderTransformOrigin como 0.5,0.5, que coloca a origem no centro do elemento. Em seguida, você pode aplicar um RotateTransform para girar o elemento ao redor do centro.

Alterar FlowDirection para RightToLeft altera o significado da coordenada X de um RenderTransformOrigin para um UIElement; 0 será a borda direita.

Alguns dos mesmos efeitos visuais que você pode produzir com RenderTransform e RenderTransformOrigin também podem ser obtidos com Projection e um PlaneProjection. Por exemplo, você pode girar um UIElement em torno de seu centro alterando PlaneProjection.RotationZ.

Aplica-se a

Confira também