PDFsharp - нарисуйте текст, поверните его вокруг пользовательской точки вращения и переместите его - PullRequest
0 голосов
/ 05 ноября 2019

Я хотел бы нарисовать текст, который поворачивается на х градусов. В связи с тем, что я не поворачиваю его вокруг его центральной точки, я тоже хочу указать смещение.

Сначала я поворачиваю прямоугольник вокруг пользовательской точки вращения

graphics.RotateAtTransform(RotationInDegrees, pivotPoint);

, и я знаю,Я могу переместить преобразование с помощью

graphics.TranslateTransform(offsetX, offsetY);

, но чтобы рассчитать смещение, мне нужно знать новые направления, поэтому верх может быть теперь снизу на 180 градусов.

У меня есть двухмерный вектор, представляющийсистема координат, где центр находится в точке (0 | 0), вверху слева (-1 | 1), внизу справа (1 | -1) и т. д. Поэтому в основном я мог сначала повернуть, а затем нарисовать текст

textFormatter.DrawString(watermarkContent, Font, Brush, textBox, Format);

и после рисования текстового поля я его перевожу. Тогда я мог бы использовать этот расчет, чтобы узнать правильный поворот

graphics.TranslateTransform(alignmentVector.X * -horizontalOffset, alignmentVector.Y * verticalOffset);

, но это невозможно. Сначала я должен применить преобразования и нарисовать в конце. Так как же правильно применить горизонтальное и вертикальное смещение к прямоугольнику (зная правильное направление) после поворота?

1 Ответ

1 голос
/ 05 ноября 2019

Преобразования применяются к элементам, которые отображаются после настройки преобразований. Это позволяет рисовать текст под углом 30 ° и другой текст под углом 60 °, изменяя преобразования позже.

Таким образом, вам необходимо применить преобразования перед рисованием текста. Преобразование также применяется к «текстовому полю», используемому для рисования текста, и нет необходимости изменять это поле.

Также см. Этот пример:
http://www.pdfsharp.net/wiki/XForms-sample.ashx

...