如何使用drawString方法来编写对角线方式

时间:2008-09-18 10:39:22

标签: c# image visual-studio-2005 gdi drawstring

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

我们如何写对角线?

由于

5 个答案:

答案 0 :(得分:9)

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

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

不要忘记扭转变化!

答案 1 :(得分:7)

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

答案 2 :(得分: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);
   }

喜欢这个

enter image description here

答案 3 :(得分:0)

你说得对..它可以用这种方式完成。但是文本将始终从上到下书写,我不确定你是否可以从下到上改变它...欢呼声

答案 4 :(得分:-1)

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

StringFormat sf = new StringFormat();    sf.FormatFlags = StringFormatFlags.DirectionVertical;    e.Graphics.DrawString(“My String”,this.Font,Brushes.Black,PointF.Empty,sf);