Как можно использовать метод drawString для написания диагонального пути

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

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

спасибо

5 ответов


сделать графика.rotateTransform перед вызовом drawString. Не забудьте отменить изменение впоследствии, как указывает Фил Райт.


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

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

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


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

   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


У вас есть право..это можно сделать таким образом..Но текст будет написан сверху вниз всегда, и я не уверен, что вы можете изменить его снизу вверх.. ура!--1-->


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

StringFormat sf = новый StringFormat(); научная фантастика.FormatFlags = StringFormatFlags.DirectionVertical; е.Графика.DrawString ("моя струна", это.Шрифт, Кисти.Черный, PointF.Пусто, sf);