web-dev-qa-db-fra.com

Comment faire pivoter du texte dans WPF en conservant la fonction de redimensionnement automatique

Je veux avoir un texte vertical. J'utilise simplement une grille simple dans WPF pour dimensionner automatiquement les zones. Mais lorsque vous utilisez RotateTransform, tous les calculs sont erronés. Aucune idée sur la façon de résoudre ça?

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

WPF rotate text Dans cette image, vous voyez ce que je veux dire. Si je veux maintenant redimensionner automatiquement la partie centrale, je ne peux pas utiliser la propriété "Largeur" ​​ou "Hauteur" car les deux généreront un résultat de dimensionnement incorrect. La largeur = 120 pixels augmentera la largeur horizontale (originale) et fera la ligne complète 120 pixels. Hauteur = 120 pixels fera la hauteur du texte 120 pixels.

35
Nasenbaer

Utilisez un LayoutTransform au lieu d'un RenderTransform. Il est appliqué pendant la passe de mise en page, pas pendant le rendu.

76
Rachel

Comme Rachel l'a dit, utilisez 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