Question

J'utilise c # 2005, je veux écrire une chaîne en diagonale sur une image. Mais par défaut, c # permet d’écrire horizontalement ou verticalement.

comment écrivons-nous en diagonale?

Merci

Était-ce utile?

La solution

Effectuez une Graphics.rotateTransform avant l'appel drawString. N'oubliez pas d'inverser le changement par la suite, comme le souligne Phil Wright.

Autres conseils

Vous pouvez utiliser les outils RotateTransform et TranslateTransform disponibles dans la classe Graphics. Parce que DrawString est utilisé avec GDI + les transformations affectent le dessin. Alors utilisez quelque chose comme ça ...

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

N'oubliez pas d'inverser le changement!

Vous pouvez utiliser cette fonction.

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

Comme ceci

entrer la description de l'image ici

Vous avez le droit..il peut être fait de cette façon..Mais le texte sera toujours écrit de haut en bas et je ne suis pas sûr que vous puissiez le changer de bas en haut .. bravo

Il existe un autre moyen de dessiner verticalement un texte construit en C #. Il n'y a pas besoin de transformation graphique explicite. Vous pouvez utiliser la classe StringFormat. Voici un exemple de code qui dessine un texte verticalement:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top