Выравнивание текста по диагонали - PullRequest
1 голос
/ 07 августа 2010

У меня есть две точки, которые рисуют линию при подключении. Линия может быть вертикальной, горизонтальной, вертикальной или (чаще всего) диагональной.

Я бы хотел попробовать текст по этому пути. Я использую C # и WinForms, но я думаю, что это не так важно, как простой псевдо-код, который может включать в себя некоторую математику (триг?), Необходимую для нахождения угла пути для выравнивания текста.

Ответы [ 2 ]

1 голос
/ 07 августа 2010

Используйте Math.Atan2 () для вычисления угла.Преобразовать из радианов в градусы, умножив на 180 / Math.Pi.Получение центра поворота для RotateTransform () является критическим шагом для правильного выравнивания текста по линии.r * Math.Cos (угол) для X-смещения от начальной точки линии, r * Sin (угол) для Y-смещения, где r - смещение от начальной точки линии.Отрегулируйте по высоте шрифта, чтобы получить его выше линии.

1 голос
/ 07 августа 2010

Если вы рисуете текст методом OnPaint(), вы можете попробовать это ( ссылка ):

Graphics g = e.Graphics;  // your graphics object.
float deg = 45F;  // an angle, this one is 45 degrees

g.RotateTransform(deg);
g.DrawString("slopey text is fun");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...