2011-06-23 26 views
28

Quiero tener un texto vertical. Solo uso una cuadrícula simple en WPF para auto-dimensionar las áreas. Pero cuando se usa RotateTransform, todos los cálculos son incorrectos. Alguna idea de como resolver esto?Cómo rotar texto en WPF manteniendo la función de auto-tamaño

 <Grid.RowDefinitions> 
      <RowDefinition Height="*" /> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 

WPF rotate text En esta imagen que ve lo que quiero decir. Si ahora quiero ajustar automáticamente el tamaño de la parte central, no puedo usar la propiedad "Ancho" o "Altura" porque ambos generarán un resultado de tamaño incorrecto. El ancho = 120px aumentará el ancho horictal (original) y hará que la fila completa tenga 120 píxeles. La altura = 120px hará que el texto tenga una altura de 120 píxeles.

Respuesta

62

Utilice LayoutTransform en lugar de RenderTransform. Se aplica durante el pase de disposición, no durante la representación.

+0

nunca utilizó este. Muchas gracias por la respuesta rápida! – Nasenbaer

+0

En Blend, esto es algo "inferior al pliegue", lo que significa que verá RenderTransform por defecto y tendrá que expandir el panel Transforms para ver LayoutTransform. Nunca lo había notado allí, pero estoy seguro de que se esconde a simple vista. –

+0

@Rachel ¿Puede UWP usar LayoutTransform? – quangkid

1
<TextBlock Height="14" 
    x:Name="TextBlock1" 
    Text="Vertical Bottom to Up" Margin="73,0,115,0" RenderTransformOrigin="0.5,0.5" > 
    <TextBlock.RenderTransform> 
     <TransformGroup> 
      <ScaleTransform/> 
      <SkewTransform/> 
      <RotateTransform Angle="-90"/> 
      <TranslateTransform/> 
     </TransformGroup> 
    </TextBlock.RenderTransform> 
</TextBlock> 
22

Al igual que Rachel dijo que el uso LayoutTransform

<TextBlock Text="Goodday" > 
    <TextBlock.LayoutTransform> 
    <RotateTransform Angle="90" /> 
    </TextBlock.LayoutTransform> 
</TextBlock> 
Cuestiones relacionadas