6

我正在使用 c# 2005 我想在图像上对角写入字符串。但默认情况下,c# 提供水平或垂直书写的选项。

我们如何对角书写?

谢谢

4

5 回答 5

9

您可以使用 Graphics 类上可用的 RotateTransform 和 TranslateTransform。因为使用 DrawString 是 GDI+,所以变换会影响绘图。所以使用这样的东西......

g.RotateTransform(45f);
g.DrawString("My String"...);
g.RotateTransform(-45f);

不要忘记扭转变化!

于 2008-09-18T10:44:22.013 回答
7

在调用 drawString 之前执行 Graphics.rotateTransform 。正如 Phil Wright 指出的那样,不要忘记事后扭转这种变化。

于 2008-09-18T10:42:17.730 回答
1

您可以使用此功能。

   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);
   }

像这样

在此处输入图像描述

于 2013-05-27T10:58:30.967 回答
0

你有权利..可以用这种方式完成..但是文本总是从上到下写,我不确定你可以从下到上改变它..干杯

于 2010-03-29T14:13:41.317 回答
-1

还有另一种在 C# 中构建的垂直绘制文本的方法。不需要显式的图形转换。您可以使用 StringFormat 类。这是一个垂直绘制文本的示例代码:

StringFormat sf = new StringFormat(); sf.FormatFlags = StringFormatFlags.DirectionVertical; e.Graphics.DrawString("我的字符串", this.Font, Brushes.Black, PointF.Empty, sf);

于 2008-10-13T13:03:06.250 回答