我开发了一个用于创建,编辑和打印标签的应用程序。在这个应用程序中,可以插入有几行文本的矩形,用户可以设置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度。我真的不知道该怎么做,我很想找到解决问题的正确方法。 在不同的旋转中绘制文本的正确方法是什么? 任何帮助都会令人愉快。提前谢谢。