2009-06-05 1 views
9

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

g.RotateTransform (90);

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

+0

Что вы имеете в виду «не работает для OnPaint»? – Lucero

+0

Ты спаситель жизни !!!! Благодаря!!! Для того, чтобы все было ясно, вы можете нарисовать что угодно, не вращаясь, тогда вы вводите: e.Graphics.RotateTransform (90); и все после этого ничьи вращаются. – 2012-07-05 13:16:04

ответ

26

Когда вы вызываете 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 градусов (по часовой стрелке), то у координат теперь будет двигаться по правой/левой оси (с вашей точки зрения), а не вверх/вниз. Более крупные номера находятся дальше влево. Таким образом, чтобы переместить наклоненный текст в видимой части поверхности, вам нужно будет уменьшить координату у:

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); 

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

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

Diagram

+1

Спасибо Фредрик. Это сработало. Я хочу, чтобы MSDN описала это так. – Prithis

+1

Весьма полезно, +1 для диаграммы – JYelton