zoukankan      html  css  js  c++  java
  • [C# WPF] 关于将文本框竖起来(旋转文字)

    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 )

    // Sample -- Ctrl => Height:500  Width:600
    
    protected override void OnRender(DrawingContext dc)
    {
        base.OnRender(dc);
    
        // TODO : for sample
        var CtrlWidth = 600;
        var CtrlHeight = 400;
    
        // ...
    
        // 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((CtrlHeight - ft.Width) / 2 - CtrlWidth, (CtrlWidth - ft.Height)/2 - CtrlHeight);    // 注意这里的计算 很容易迷糊
     
        dc.PushTransform(RT);
        dc.DrawText(ft, point );
        dc.Pop();
    
        // Do other Drawing..
    }
    
    

    要点:
    OnRender 中旋转时,以渲染对象的 Point(0, 0) 点为基准,进行旋转,270度,90度的时候,就是X Y对调的情况。
    当旋转180度的时候,X取反,Y取反。

    作者:码路工人

    公众号:码路工人有力量(Code-Power)

    欢迎关注个人微信公众号 Coder-Power

    一起学习提高吧~

  • 相关阅读:
    unicode,ascii是一種字符集,而uft是一種編碼方式
    加水印程序
    收錄PHP試題
    window下接裝php+Apache+mysql
    查找字符串程序
    連接兩表sql語句,二種寫法,sql面試題目
    求一組9位數且不重複(19組成),滿足前n位能被n整除,例如:取先二位能被2整除,取先三位能被3整除...取先九位能被9整除。
    php連mssql,access的方法 js連接access數據庫
    asp.net試題(五)
    lamp+vsftp +zend optimizer 配置,需要注意的地方
  • 原文地址:https://www.cnblogs.com/CoderMonkie/p/rotate-text-in-wpf.html
Copyright © 2011-2022 走看看