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

Posted

技术标签:

【中文标题】drawString 方法如何用于编写对角线方式【英文标题】:How can drawString method be used for writing diagonal way 【发布时间】:2010-09-10 15:06:05 【问题描述】:

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

我们如何斜着写?

谢谢

【问题讨论】:

【参考方案1】:

在调用 drawString 之前执行 Graphics.rotateTransform。正如 Phil Wright 指出的那样,不要忘记事后撤销更改。

【讨论】:

在文本编辑器中为每一行添加半随机变换会很有趣:)【参考方案2】:

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

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

不要忘记撤消更改!

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

你有正确的..可以这样做..但是文本总是从上到下写,我不确定你可以从下到上改变它..干杯

【讨论】:

【参考方案5】:

你可以使用这个功能。

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

这样

【讨论】:

像魅力一样工作!但是如何确定倾斜文本的宽度?例如如果我的字符串宽度为 50。旋转文本后,它会占用更少的宽度...

以上是关于drawString 方法如何用于编写对角线方式的主要内容,如果未能解决你的问题,请参考以下文章

如何对齐 SpriteBatch.DrawString 绘制的文本?

为啥 Graphics2D.setStoke() 不适用于 Graphics2D.drawString?

使用Java drawString实现如下Text对齐

JAVA中,drawstring 方法的用法,格式是啥啊

如何在 Java 中居中 Graphics.drawString()?

如何以非线性方式在C ++中保存矩阵