2008-09-18 29 views

Respuesta

7

Haz una Graphics.rotateTransform antes de la llamada de cordón. No olvide invertir el cambio después, como señala Phil Wright.

+0

Usted puede tener muchísima diversión adición de un semi-aleatoria de transformación para cada línea en un editor de texto :) – leppie

9

Puede usar el RotateTransform y el TranslateTransform que están disponibles en la clase Graphics. Debido a que el uso de DrawString es GDI +, las transformaciones afectan el dibujo. Entonces use algo como esto ...

g.RotateTransform(45f); 
g.DrawString("My String"...); 
g.RotateTransform(-45f); 

¡No olvide cambiar el cambio!

-1

Hay otra forma de dibujar un texto verticalmente construido en C#. No hay necesidad de transformación explícita de gráficos. Puede usar la clase StringFormat. Aquí hay un código de ejemplo que dibuja un texto verticalmente:

StringFormat sf = new StringFormat(); sf.FormatFlags = StringFormatFlags.DirectionVertical; e.Graphics.DrawString ("Mi cadena", this.Font, Brushes.Black, PointF.Empty, sf);

0

u tiene right..It se puede hacer en ese texto way..BUT será escrito desde arriba hacia abajo siempre y no estoy seguro de que u puede cambiarlo desde abajo hacia arriba .. aplausos

1

You puede usar esta función.

void DrawDigonalString(Graphics G, string S, Font F, Brush B, PointF P, int Angle) 
    { 
     SizeF MySize = G.MeasureString(S, F); 
     G.TranslateTransform(P.X + MySize.Width/2, P.Y + MySize.Height/2); 
     G.RotateTransform(Angle); 
     G.DrawString(S, F, B, new PointF(-MySize.Width/2, -MySize.Height/2)); 
     G.RotateTransform(-Angle); 
     G.TranslateTransform(-P.X - MySize.Width/2, -P.Y- MySize.Height/2); 
    } 

gusta esta

enter image description here

+0

funciona como un encanto! Pero, ¿cómo puedo determinar el ancho del texto en ángulo? p.ej. si tengo un ancho de cadena de 50. Después de rotar el texto, tomará menos ancho ... – prototype0815

Cuestiones relacionadas