http://bbs.csdn.net/topics/392009486
上面的帖子是本人发的关于Graphics画图转置 的问题,
已经实现想要的效果
但是存在一个问题,就是假如字符串的结尾是( 、) 、. 等特殊字符时
这个就自动跑到这一行的最前端
如上图所示
红色框子部分的括弧 应该是在他的最上方成对 的,但是一转就下来了 ,不知什么情况
假如下方已经有了括弧,上方的就不会下来
求高手解答
上面的帖子是本人发的关于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); }