【问题标题】:WPF, TextBlock Rotation, Alignment IssuesWPF、TextBlock 旋转、对齐问题
【发布时间】:2014-05-23 16:30:32
【问题描述】:

我想根据文本的中心点(水平和垂直)旋转 TextBlock。我已经尝试了以下代码。它总是占据文本块的左上角。如何将其更改为文本本身的中心。

<TextBlock Name="textBlock1"  TextWrapping="Wrap" FontSize="25" Foreground="#FFF63AFF" FontWeight="Bold"> 
TextBlock 
   <TextBlock.RenderTransform>
       <TransformGroup>
           <RotateTransform Angle="45" /> 
       </TransformGroup>   
   </TextBlock.RenderTransform>  
</TextBlock>

图片说明:文本块是画布的一部分,文本块应根据图片所示的交点旋转

我也尝试过 Horizo​​ntalAlignment 和 VerticalAlignment,实际上它正在获取父级的对齐细节。

我需要得到实际宽度和实际高度,然后根据这些细节计算中心点吗?

【问题讨论】:

    标签: wpf wpf-controls textblock


    【解决方案1】:

    在文本框中添加属性:

    TextAlignment="Center"
    

    这是用于水平对齐

    【讨论】:

    • 不,它将采用父级的宽度进行对齐,而不是文本块本身
    • 对不起,我不明白你的意思。你能把代码准确地告诉我吗??
    • 先生,请立即查看图片说明
    【解决方案2】:

    你需要使用 RenderTransformOrigin=".5,.5"

       <Grid>
            <TextBlock Name="textBlock1" RenderTransformOrigin=".5,.5"  HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap" FontSize="25" Foreground="#FFF63AFF" FontWeight="Bold"> 
                TextBlock
                <TextBlock.RenderTransform>
                    <TransformGroup>
                        <RotateTransform Angle="45" />
                    </TransformGroup>
                </TextBlock.RenderTransform>
            </TextBlock>
        </Grid>
    

    输出

    【讨论】:

    • 太棒了,但是现在我想将中心移动到某个点说(0,0)或(10,5)怎么做? TranslateTransform 仅使用相对值
    • 看到中心点是在 rendertransform 原点中定义的,它以百分比为单位,所以如果你想把中心放在左上角,你的中心是 0,0,右上角是 1,0,如果您将中心设置为 2,0 它将位于右上角 + 控件宽度。我希望我能用文字来形容它是非常困难的
    猜你喜欢
    • 1970-01-01
    • 2016-10-20
    • 2011-10-28
    • 2011-05-06
    • 1970-01-01
    • 2014-10-10
    • 2010-12-02
    • 2010-11-09
    • 1970-01-01
    相关资源
    最近更新 更多