Compartilhar via


Como inverter um UIElement horizontal ou verticalmente

Este exemplo mostra como usar um ScaleTransform para inverter um UIElement horizontal ou verticalmente. Neste exemplo, um controle Button (um tipo de UIElement) é invertido aplicando um ScaleTransform à propriedade RenderTransform dele.

Ilustração para virar um botão

A ilustração a seguir mostra o botão para girar.

Um botão sem transformação
O UIElement a ser invertido

O exemplo a seguir mostra o código que cria o botão.

<Button Content="Flip me!" Padding="5">
</Button>

Ilustração para inverter um botão horizontalmente

Para inverter o botão horizontalmente, crie um ScaleTransform e defina sua propriedade ScaleX como -1. Aplique o ScaleTransform à propriedade RenderTransform do botão.

<Button Content="Flip me!" Padding="5">
  <Button.RenderTransform>
    <ScaleTransform ScaleX="-1" />
  </Button.RenderTransform>
</Button>

Um botão virado horizontalmente sobre o ponto (0,0)
O botão depois de aplicar o ScaleTransform

Ilustração para girar um botão em seu lugar

Como você pode ver na ilustração anterior, o botão foi invertido, mas também foi movido. Isso ocorre porque o botão foi invertido no seu canto superior esquerdo. Para girar o botão no lugar, é necessário aplicar o ScaleTransform ao centro dele, não ao seu canto. Uma maneira fácil de aplicar o ScaleTransform ao centro de botões é definir a propriedade RenderTransformOrigin do botão como 0,5, 0,5.

<Button Content="Flip me!" Padding="5"
  RenderTransformOrigin="0.5,0.5">
  <Button.RenderTransform>
    <ScaleTransform ScaleX="-1" />
  </Button.RenderTransform>
</Button>

Um botão virado horizontalmente em relação ao centro dele
O botão com um RenderTransformOrigin de 0,5, 0,5

Ilustração para virar um botão verticalmente

Para inverter o botão verticalmente, defina a propriedade ScaleY do objeto ScaleTransform em vez de sua propriedade ScaleX.

<Button Content="Flip me!" Padding="5"
  RenderTransformOrigin="0.5,0.5">
  <Button.RenderTransform>
    <ScaleTransform ScaleY="-1" />
  </Button.RenderTransform>
</Button>

Um botão invertido verticalmente sobre o centro dele
O botão invertido verticalmente

Consulte também