Повернуть текст для печати - PullRequest
9 голосов
/ 05 июня 2009

Я использую PrintDocument для печати страницы. В какой-то момент я хочу повернуть текст на 90 градусов и напечатать его, т.е. напечатать текст вертикально. Есть идеи ???

g.RotateTransform (90);

не работает для OnPaint.

1 Ответ

27 голосов
/ 05 июня 2009

Когда вы вызываете RotateTransform, вам нужно будет обратить внимание на то, где заканчивается система координат. Если вы запустите следующий код, «Наклоненный текст» появится слева от левого края; так что не видно:

e.Graphics.Clear(SystemColors.Control);
e.Graphics.DrawString("Normal text", this.Font, SystemBrushes.ControlText, 10, 10);
e.Graphics.RotateTransform(90);
e.Graphics.DrawString("Tilted text", this.Font, SystemBrushes.ControlText, 10, 10);

Поскольку вы наклонили поверхность рисования на 90 градусов (по часовой стрелке), координата y теперь будет двигаться вдоль правой / левой оси (с вашей точки зрения), а не вверх / вниз. Большие числа дальше слева. Таким образом, чтобы переместить наклонный текст в видимую часть поверхности, вам нужно уменьшить координату y:

e.Graphics.Clear(SystemColors.Control);
e.Graphics.DrawString("Normal text", this.Font, SystemBrushes.ControlText, 10, 10);
e.Graphics.RotateTransform(90);
e.Graphics.DrawString("Tilted text", this.Font, SystemBrushes.ControlText, 10, -40);

По умолчанию система координат имеет свое происхождение в верхнем левом углу поверхности, так что это ось, вокруг которой RotateTransform будет вращать поверхность.

Вот изображение, которое иллюстрирует это; черный перед вызовом RotateTransform, красный после вызова RotateTransform (35):

Diagram

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