WFP文字旋转后被剪裁

我在用WPF做文字旋转是遇到一个问题,旋转后文字被剪裁掉了,只能显示部分字符。

下面有xaml代码中有一个TextBox内容为“This is a long text will be cut after rotate”, 字符串比较长,我们最外层的Grid Width=100,如果TextBox正常横向显示是不放不下的,这里我本来就需要把文字旋转90°竖排。Grid高度很高 600px, 本来是可以放下整个字符串的,但是旋转之后文字被剪裁掉了,只留下大概100px的长度。

原因分析:大概是因为在旋转之前WPF把字符按照最大宽度100px先剪裁了,再旋转的,所以旋转之后文字变短了。

解决方法:加入margin控制, 左右各加入100px margin,这样原先的TextBox在横向的时候就可以全部放下整个字符串了,所以在旋转之后就可以全部显示出来。这里100px大家可以自己调整。

注意:记得一定要左右加相同的margin,这样旋转之后字符串才能位置原来的Aligment (居左,居中, 居右)

 

<!-- Top Grid width 100px -->
<Grid Grid.Row="0" Grid.Column="0"> 
       <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"></ColumnDefinition>
             <ColumnDefinition Width="*"></ColumnDefinition>
       </Grid.ColumnDefinitions>
       <TextBlock x:Name="YAxisLabel" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Center" 
VerticalAlignment="Center" Text="This is a long text will be cut after rotate" RenderTransformOrigin="0.5,0.5" 
TextTrimming="None" Margin="-100,0,-100,0">
              <TextBlock.RenderTransform>
                   <RotateTransform Angle="-90"/>
                </TextBlock.RenderTransform>
       </TextBlock>
       <Canvas Grid.Row="0" Grid.Column="1" Loaded="YAxisCanvs_Loaded">
            <Line Canvas.Right="0" Canvas.Bottom="0" X1="0" X2="0" Y1="0" Y2="200" Stroke="Black" StrokeThickness="2"></Line>
       </Canvas>
</Grid>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值