Как повернуть текст в WPF, сохранив функцию автоматического изменения размера - PullRequest
31 голосов
/ 23 июня 2011

Я хочу иметь текст по вертикали. Я просто использую простую сетку в WPF для автоматического определения размера областей. Но при использовании RotateTransform все расчеты неверны. Есть идеи, как это решить?

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

WPF rotate text На этом изображении вы видите, что я имею в виду. Если я теперь хочу автоматически изменить размер средней части, я не могу использовать свойство «Ширина» или «Высота», потому что оба приведут к неправильному результату изменения размера. Ширина = 120px увеличит горизонтальную (оригинальную) ширину и сделает весь ряд 120 пикселей. Высота = 120 пикселей сделает текст высотой 120 пикселей.

Ответы [ 3 ]

71 голосов
/ 23 июня 2011

Используйте LayoutTransform вместо RenderTransform.Он применяется во время прохода макета, а не во время рендеринга.

25 голосов
/ 19 февраля 2014

Как сказала Рэйчел, используйте LayoutTransform

<TextBlock Text="Goodday" >
   <TextBlock.LayoutTransform>
     <RotateTransform Angle="90" />
   </TextBlock.LayoutTransform>  
</TextBlock>
1 голос
/ 02 января 2012
<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> 
...