在不同的旋转中绘制文本的正确方法是什么?

时间:2013-10-21 12:58:52

标签: c# gdi+ system.drawing

我开发了一个用于创建,编辑和打印标签的应用程序。在这个应用程序中,可以插入有几行文本的矩形,用户可以设置0°,90°,270°和180°之间的字体,颜色,...和方向。所以我写了一个方法,根据方向,使用GDI +和DrawString方法在边界矩形内绘制文本。

 switch (RotationAngle)
            {
                case 90:
                    g.RotateTransform(90);
                    objRec = DrawRectangle.GetNormalizedRectangle(objRec.Top, -objRec.Left,
                        objRec.Bottom, -objRec.Right);
                    g.DrawString(lines[i], textFont, brush, objRec, sf);
                    g.RotateTransform(-90);
                    break;
                case 180:
                    g.RotateTransform(180);
                    objRec = DrawRectangle.GetNormalizedRectangle(-objRec.Left, -objRec.Top,
                        -objRec.Right, -objRec.Bottom); 
                    g.DrawString(lines[i], textFont, brush, objRec, sf);
                    g.RotateTransform(-180);
                    break;
                case 270:
                    g.RotateTransform(270);
                    objRec = DrawRectangle.GetNormalizedRectangle(-objRec.Top, +objRec.Left,
                      -objRec.Bottom, +objRec.Right);
                    g.DrawString(lines[i], textFont, brush, objRec, sf);
                    g.RotateTransform(-270);
                    break;
                case 0:
                    g.DrawString(lines[i], textFont, brush, objRec, sf);
                    break;
            }

其中“objRect”是用户设置的原始矩形。该方法适用于所有方向,但不适用于180°!在这种情况下,文本绘制为0度。我真的不知道该怎么做,我很想找到解决问题的正确方法。 在不同的旋转中绘制文本的正确方法是什么? 任何帮助都会令人愉快。提前谢谢。

0 个答案:

没有答案