2011-06-23 13 views
28

Chcę mieć pionowy tekst. Po prostu używam prostej siatki w WPF do automatycznego rozmiaru obszarów. Ale podczas korzystania z RotateTransform wszystkie obliczenia są błędne. Każdy pomysł, jak to rozwiązać?Jak obrócić tekst w WPF, zachowując funkcję automatycznego rozmiaru?

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

WPF rotate text W tym obrazie można zobaczyć, co mam na myśli. Jeśli chcę teraz automatycznie dopasować środkową część, nie mogę użyć właściwości "Szerokość" lub "Wysokość", ponieważ obie podniosą nieprawidłowy wynik wymiarowania. Szerokość = 120px zwiększy szerokość klatki piersiowej (oryginalną) i stworzy pełny wiersz 120 pikseli. Wysokość = 120 pikseli powoduje, że tekst ma wysokość 120 pikseli.

Odpowiedz

62

Użyj LayoutTransform zamiast RenderTransform. Zostaje zastosowany podczas przejścia układu, a nie podczas renderowania.

+0

nigdy nie użyłem tego. Wielkie dzięki za szybką odpowiedź !!! – Nasenbaer

+0

W Blendzie jest to nieco "pod spodem" - co oznacza, że ​​domyślnie widzisz RenderTransform i musisz rozwinąć panel Transforms, aby zobaczyć LayoutTransform. Nigdy go tam nie zauważyłem, ale na pewno ukrywa się prawie na widoku. –

+0

@Rachel Can UWP użyć 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

Podobnie jak Rachel powiedział użycie LayoutTransform

<TextBlock Text="Goodday" > 
    <TextBlock.LayoutTransform> 
    <RotateTransform Angle="90" /> 
    </TextBlock.LayoutTransform> 
</TextBlock> 
Powiązane problemy