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):
¿Qué quiere decir "no funciona para OnPaint"? – Lucero
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. –