Выравнивание текста на диагональном пути

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

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

1
задан Dominic K 7 August 2010 в 05:30
поделиться

2 ответа

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

1
ответ дан 2 September 2019 в 22:21
поделиться

Если вы рисуете текст в методе 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");
1
ответ дан 2 September 2019 в 22:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: