1

我开发了一个应用程序来创建、编辑和打印标签。在此应用程序中,可以插入包含多行文本的矩形,用户可以在 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 度。我真的不知道该怎么做,我正在疯狂地寻找解决问题的正确方法。以不同的旋转方式绘制文本的正确方法是什么?任何帮助都会很愉快。提前致谢。

4

0 回答 0