Pregunta

Estoy usando C# 2005. Quiero escribir una cadena en diagonal en la imagen.Pero, de forma predeterminada, C# ofrece la opción de escribir horizontal o verticalmente.

¿Cómo escribimos en diagonal?

Gracias

¿Fue útil?

Solución

hacer un Gráficos.rotateTransform antes de la llamada a drawString.No olvide revertir el cambio después, como señala Phil Wright.

Otros consejos

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

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

¡No olvides revertir el cambio!

Puede utilizar 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);
   }

Como esto

enter image description here

Tienes razón... Se puede hacer de esa manera... PERO el texto siempre se escribirá de arriba a abajo y no estoy seguro de que puedas cambiarlo de abajo hacia arriba...salud

Hay otra forma de dibujar un texto verticalmente que está integrada en C#.No hay necesidad de una transformación gráfica explícita.Puedes usar la clase StringFormat.Aquí hay un código de muestra que dibuja un texto verticalmente:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top