1

我在 WPF 窗口中有一个网格,它的第一列中包含一个标签。我为标签应用了 SkewTransform。如果我减小列宽,则标签显示一半

截屏

替代文字 http://freephotoupload.net/images/673_Lable.jpg

我期待它显示Prashant,我的主要目的是减少标签旁边的额外空白

XAML 代码

    <Grid ShowGridLines="True">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="146.334" />
                <ColumnDefinition Width="94.666" />
            </Grid.ColumnDefinitions>
            <Label Margin="0" VerticalAlignment="Center" Width="Auto" Name="label1" RenderTransformOrigin="0.5,0.5" Content="Prashant">
                <Label.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform ScaleX="1" ScaleY="1"/>
                        <SkewTransform AngleX="0" AngleY="0"/>
                        <RotateTransform Angle="-90"/>
                        <TranslateTransform X="0" Y="0"/>
                    </TransformGroup>
                </Label.RenderTransform>
    </Label>
</Grid>

任何建议请......

4

1 回答 1

2

做一个LayoutTransform而不是一个RenderTransform

在 WPFRenderTransforms中,在控件布局后对其执行。

在你的情况下,Label首先被列的宽度缩短;然后,应用 RenderTransform (旋转是唯一做任何事情的),导致它看起来很奇怪Label

ALayoutTransform在布局控件之前完成。

像这样:

<Grid ShowGridLines="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="146.334" />
        <ColumnDefinition Width="94.666" />
    </Grid.ColumnDefinitions>
    <Label 
        Name="label1" 
        Content="Prashant"
        Margin="0"  
        Width="Auto" 
        VerticalAlignment="Center"
        RenderTransformOrigin="0.5,0.5">
        <Label.LayoutTransform>
            <TransformGroup>
                <ScaleTransform ScaleX="1" ScaleY="1"/>
                <SkewTransform AngleX="0" AngleY="0"/>
                <RotateTransform Angle="-90"/>
                <TranslateTransform X="0" Y="0"/>
            </TransformGroup>
        </Label.LayoutTransform>
    </Label>
</Grid>
于 2009-07-17T07:10:39.187 回答