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

发布于 2024-07-04 12:33:19 字数 95 浏览 7 评论 0原文

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

我们如何写对角线?

谢谢

I am using c# 2005 i want to write string diagonally on image. But by default c# provides the option to write horizontally or vertically.

how we write diagonally?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

巴黎夜雨 2024-07-11 12:33:20

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

u have right..It can be done in that way..BUT text will be written from top to bottom always and I'm not sure u can change it from bottom to top.. cheers

睫毛上残留的泪 2024-07-11 12:33:20

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

Do a Graphics.rotateTransform before the drawString call. Don't forget to reverse the change afterwards, as Phil Wright points out.

挖个坑埋了你 2024-07-11 12:33:20

您可以使用此功能。

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

像这样

在此处输入图像描述

You can use this function.

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

Like this

enter image description here

怪我闹别瞎闹 2024-07-11 12:33:20

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

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

There is another way to draw a text vertically which is built in the C#. There is no need of explicit graphics transformation. You can use the StringFormat class. Here is a sample code which draws a text vertically:

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

酸甜透明夹心 2024-07-11 12:33:19

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

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

不过不要忘记撤销更改!

You can use the RotateTransform and TranslateTransform that are available on the Graphics class. Because using DrawString is GDI+ the transforms affects the drawing. So use something like this...

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

Don't forget to reverse the change though!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文