Comment écrire du texte vertical ?

Contenu du snippet

Il est souvent demandé, lorsque des histogrammes doivent être affichés, d?écrire du texte verticalement. Or, rien n?est prévu dan le framework pour faire cela ! La seule solution est de créer une image du texte à afficher, puis de la faire pivoter?
Pour écrire du texte verticalement, la seule solution est de transformer ce texte en image et de faire pivoter cette image de 90°, comme ceci :

Source / Exemple :


string message = "Mon texte à afficher";

// Création de l'image
Bitmap b = new Bitmap(1, 1);
Font f = new Font("Arial", 8);
Graphics graphics = Graphics.FromImage(b);			
int width = (int) graphics.MeasureString(message,f).Width;
int height = (int) graphics.MeasureString(message,f).Height;
b = new Bitmap(b, new Size(height, width));
graphics = Graphics.FromImage(b);
graphics.Clear(Color.White);
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.SmoothingMode = SmoothingMode.AntiAlias;
			
// Création du texte de l'image
StringFormat sf = StringFormat.GenericTypographic;
sf.FormatFlags = StringFormatFlags.DirectionVertical;	// Position verticale
graphics.DrawString(message, f, new SolidBrush(Color.FromArgb(62, 62, 62)), 0, 0, sf);
graphics.Flush();

// Enregistrement de l'image
string directory = System.Configuration.ConfigurationSettings.AppSettings["installPath"];
message = message.Replace(" ", "");
directory += @"\Images\Generated\" + message + ".gif";
b.Save(directory, System.Drawing.Imaging.ImageFormat.Gif);

Conclusion :


L?image est créée en fonction du texte à écrire. Cette image doit ensuite être enregistrée sur le disque dur du serveur, ce qui nécessite de donner les bons droits d?accès à ce répertoire.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.