Как метод drawString может быть использован для написания диагонального пути - PullRequest
6 голосов
/ 18 сентября 2008

Я использую c # 2005, я хочу написать строку по диагонали на изображении. Но по умолчанию c # предоставляет возможность писать по горизонтали или по вертикали.

как мы пишем по диагонали?

Спасибо

Ответы [ 5 ]

9 голосов
/ 18 сентября 2008

Вы можете использовать RotateTransform и TranslateTransform, которые доступны в классе Graphics. Поскольку использование DrawString - это GDI +, преобразования влияют на чертеж. Так что используйте что-то вроде этого ...

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

Не забудьте отменить изменение!

7 голосов
/ 18 сентября 2008

Выполните Graphics.rotateTransform перед вызовом drawString. Не забудьте потом отменить изменения, как отмечает Фил Райт.

1 голос
/ 27 мая 2013

Вы можете использовать эту функцию.

   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

0 голосов
/ 29 марта 2010

у вас есть право .. Это можно сделать таким образом .. НО текст будет записываться сверху вниз всегда, и я не уверен, что вы можете изменить его снизу вверх .. ура

0 голосов
/ 13 октября 2008

Есть еще один способ нарисовать текст по вертикали, который построен на C #. Нет необходимости явного графического преобразования. Вы можете использовать класс StringFormat. Вот пример кода, который рисует текст по вертикали:

StringFormat sf = new StringFormat (); sf.FormatFlags = StringFormatFlags.DirectionVertical; e.Graphics.DrawString («Моя строка», this.Font, Brushes.Black, PointF.Empty, sf);

...