如何使用drawString方法来书写对角线
-
01-07-2019 - |
题
我正在使用 c# 2005 我想在图像上对角写入字符串。但默认情况下,c# 提供了水平或垂直书写的选项。
我们如何写对角线?
谢谢
解决方案
做一个 图形.rotateTransform 在drawString 调用之前。正如 Phil Wright 指出的那样,不要忘记事后撤销更改。
其他提示
您可以使用 Graphics 类中提供的 RotateTransform 和 TranslateTransform。因为使用 DrawString 是 GDI+,所以变换会影响绘图。所以使用这样的东西......
g.RotateTransform(45f);
g.DrawString("My String"...);
g.RotateTransform(-45f);
但不要忘记撤销更改!
您可以使用此功能。
void DrawDigonalString(Graphics G, string S, Font F, Brush B, PointF P, int Angle)
{
SizeF MySize = G.MeasureString(S, F);
G.TranslateTransform(P.X + MySize.Width / 2, P.Y + MySize.Height / 2);
G.RotateTransform(Angle);
G.DrawString(S, F, B, new PointF(-MySize.Width / 2, -MySize.Height / 2));
G.RotateTransform(-Angle);
G.TranslateTransform(-P.X - MySize.Width / 2, -P.Y- MySize.Height / 2);
}
像这样
你有权利..可以用这种方式完成..但是文本将始终从上到下写入,我不确定你可以从下到上更改它..干杯
还有另一种垂直绘制文本的方法,它是用 C# 构建的。不需要显式的图形转换。您可以使用 StringFormat 类。这是垂直绘制文本的示例代码:
StringFormat sf = new StringFormat();sf.FormatFlags = StringFormatFlags.DirectionVertical;e.Graphics.DrawString("我的字符串", this.Font, Brushes.Black, PointF.Empty, sf);
不隶属于 StackOverflow