Code Bye

Graphics画图转置 特殊字符位置跑到行前

http://bbs.csdn.net/topics/392009486
上面的帖子是本人发的关于Graphics画图转置 的问题,
已经实现想要的效果
但是存在一个问题,就是假如字符串的结尾是(  、) 、.  等特殊字符时
这个就自动跑到这一行的最前端

如上图所示
红色框子部分的括弧 应该是在他的最上方成对 的,但是一转就下来了 ,不知什么情况
假如下方已经有了括弧,上方的就不会下来
求高手解答
解决方案

10

目测是原因是你设置了DirectionRightToLeft

40

30

        void Form1_Paint(object sender, PaintEventArgs e)
        {
            var g = e.Graphics;
            //g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
            using (var path = new GraphicsPath())
            {
                path.AddString("examined(mm)\r\nF(mm)", Font.FontFamily, 1, 24, new Point(10, 80), new StringFormat());
                g.FillPath(Brushes.Blue, path);
                path.Transform(GetMatrix(270, 10, 80, 0, 80));
                g.FillPath(Brushes.Red, path);
            }
        }
        Matrix GetMatrix(double angle, int a=0, int b=0, int mx = 0, int my = 0)
        {
            var n = angle / 180 * Math.PI;
            var n1 = (float)Math.Cos(n);
            var n2 = (float)Math.Sin(n);
            var n3 = (float)-Math.Sin(n);
            var n4 = (float)Math.Cos(n);
            return new Matrix(n1, n2, n3, n4, a * (1 - n1) + b * n2 + mx, b * (1 - n4) + a * n3 + my);
        }

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Graphics画图转置 特殊字符位置跑到行前