2009-06-05 11 views
9

Estoy utilizando un PrintDocument para imprimir una página. En un momento dado quiero rotar el texto 90 grados e imprimirlo, es decir, imprimir texto verticalmente. Algunas ideas ???Girar texto para imprimir

g.RotateTransform (90);

no funciona para OnPaint.

+0

¿Qué quiere decir "no funciona para OnPaint"? – Lucero

+0

Eres un salvador de vidas !!!! ¡¡¡Gracias!!! Para aclarar las cosas, puede dibujar lo que quiera sin girar, luego escriba: e.Graphics.RotateTransform (90); y todo lo demás se dibuja rotado. –

Respuesta

26

Cuando llame a RotateTransform tendrá que prestar atención a donde termina el sistema de coordenadas. Si ejecuta el siguiente código, el "Texto inclinado" aparecerá a la izquierda del borde izquierdo; así que no es visible:

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

Puesto que usted ha inclinado la superficie de dibujo 90 grados (las agujas del reloj), la coordenada Y ahora se moverá a lo largo del eje de la derecha/izquierda (desde su perspectiva) en lugar de hacia arriba/abajo. Los números más grandes están más a la izquierda. Así que para mover el texto inclinado hacia la parte visible de la superficie, tendrá que disminuir la coordenada 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); 

Por defecto, el sistema de coordenadas tiene su origo en la esquina superior izquierda de la superficie, por lo que es el eje alrededor del cual RotateTransform rotará la superficie.

Aquí hay una imagen que ilustra esto; negro es antes de la llamada a RotateTransform, el rojo es después de la llamada a RotateTransform (35):

Diagram

+1

Gracias Fredrik. Funcionó. Desearía que MSDN lo describiera así. – Prithis

+1

Muy útil, +1 para el diagrama – JYelton