我正在使用c#2005我想在图像上对角线写字符串。但默认情况下,c#提供了水平或垂直写入的选项。
我们如何写对角线?
由于
答案 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);
}
喜欢这个
答案 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);