在小网格/面板内旋转文本

时间:2013-11-14 15:02:24

标签: wpf xaml grid label stackpanel

<Label Grid.Row="1"
       Height="70"
       Margin="2"
       Width="300"
       Content="{l:Translate Key={x:Static l:MultistringTags.SHOW_MENU}}"
       DockPanel.Dock="Bottom"
       FontSize="20"
       FontWeight="Bold"
       Foreground="White">
       <Label.RenderTransform>
           <RotateTransform Angle="270" />
       </Label.RenderTransform>
</Label>

这里我要旋转文本,它位于网格内部,网格列宽度等于文本高度。在这种情况下,我只看到文本的一部分,如果文本是在没有按网格宽度旋转切割的情况下绘制的,并且旋转到所需的角度。我试过面板,他们给了我相同的结果。

是否有人知道一些解决方法,使其显示所有文本,我不想使用图像,因为文本应该是可翻译的。

2 个答案:

答案 0 :(得分:4)

我相信如果您更改它以设置LayoutTransform而不是RenderTransform,则会阻止文本被切断。

        <Label.LayoutTransform>
            <RotateTransform Angle="270" />
        </Label.LayoutTransform>

答案 1 :(得分:1)

除了@ nekizalb的答案说明你应该使用LayoutTransform之外,你需要这样做而不是使用RenderTransform是因为每次发生的时间...... LayoutTransform会影响布局效果。

来自MSDN上的UIElement.RenderTransform Property页:

  

渲染变换不会重新生成布局大小或渲染大小信息。渲染变换通常用于为元素设置动画或应用临时效果。例如,元素在聚焦或鼠标悬停时可能会变焦,或者可能会在加载时抖动以吸引眼球到用户界面(UI)的那一部分。

来自MSDN上的FrameworkElement.LayoutTransform Property页:

  

与RenderTransform相比,LayoutTransform会影响布局结果。

     

LayoutTransform有用的示例场景包括:旋转元素,如水平到垂直的菜单组件,反之亦然,焦点上的缩放元素(放大),提供编辑行为等。