首页 > Windows开发 > 详细

[C# WPF] 关于将文本框竖起来(旋转文字)

时间:2019-10-15 18:42:41      阅读:216      评论:0      收藏:0      [点我收藏+]

xx.xmal.cs 后台代码中动态添加控件到 UI

文字显示在一个 Canvas 中(定位用Canvas.SetLeft() / Canvas.SetTop() ),
为了实现排版效果,可适当在 TextBlock 外套一层 StackPanel 或 DockPanel

DockPanel pnl = new DockPanel();
TextBlock titleBlock = new TextBlock();

titleBlock.LayoutTransform = new RotateTransform()
{
    Angle = 270    // or 90
};
titleBlock.VerticalAlignment = VerticalAlignment.Center;

titleBlock.Text = "Here some Text";
Canvas.SetLeft(pnl, 50);
Canvas.SetTop(pnl, 100);

这时候,文本旋转,跟定位时的 坐标 X Y 并没有相互影响(也就是上面的设位置,不需要作什么特别考虑)。
而另一种情况:

在渲染过程中自定义渲染内容 ( 重写的 OnRender )

protected override void OnRender(DrawingContext dc)
{
    base.OnRender(dc);

    // ...

    // DrawTitle
    var ft = new FormattedText("Some Text Here", CultureInfo.CurrentCulture,
        FlowDirection.LeftToRight, new Typeface("Tahoma"), 15, Brushes.Black);

    // use ft.Width and ft.Height to calculate POSITIONS

    RotateTransform RT = new RotateTransform() { Angle = 270 };    // 要旋转的角度

    var point = new Point((500 - ft.Height) / (-2), (600 - ft.Width)/2);    // 注意这里:因为旋转使横纵对调,所以这里的 Point(X,Y) 也就变为 原参照系的 (Y,X)值
 
    dc.PushTransform(RT);
    dc.DrawText(ft, point );
    dc.Pop();

    // Do other Drawing..
}

[C# WPF] 关于将文本框竖起来(旋转文字)

原文:https://www.cnblogs.com/CoderMonkie/p/rotate-text-in-wpf.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!