web-dev-qa-db-ja.com

自動サイズ設定機能を維持してWPFでテキストを回転させる方法

縦書きにしたい。 WPFで単純なグリッドを使用して、領域のサイズを自動調整します。しかし、RotateTransformを使用すると、すべての計算が正しくありません。これを解決する方法はありますか?

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

WPF rotate text この画像では、私の意味がわかります。中央部分のサイズを自動調整したい場合、「Width」または「Height」プロパティを使用できません。どちらもサイズ変更の結果が正しくないためです。幅= 120pxは水平(元の)幅を増やし、完全な行を120ピクセルにします。 Height = 120pxは、テキストを120ピクセルの高さにします。

35
Nasenbaer

LayoutTransformの代わりにRenderTransformを使用してください。レンダリング中ではなく、レイアウトパス中に適用されます。

76
Rachel

レイチェルが言ったように、LayoutTransformを使用する

<TextBlock Text="Goodday" >
   <TextBlock.LayoutTransform>
     <RotateTransform Angle="90" />
   </TextBlock.LayoutTransform>  
</TextBlock>
28
Max Mazur
<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> 
1
mujtaba Hyder