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