J'utilise .NET pour dessiner une chaîne dans un espace limité. Je veux que la corde soit aussi grande que possible. Je n'ai aucun problème dans la chaîne qui se brise en plusieurs lignes (si elle reste à l'intérieur du rectangle). Maintenant, le problème: je ne veux pas. NET pour casser la chaîne dans différentes lignes au milieu d'un mot. Par exemple, la chaîne "Test" imprime sur une seule ligne dans une grande police. La chaîne "Testing" devrait imprimer sur une seule ligne dans une police plus petite (et non "Testi" sur une ligne et "ng" sur une autre) et la chaîne "Test Test" devrait imprimer sur deux lignes dans une police assez grande.Désactiver la rupture de mot lors de l'encapsulation de lignes dans .NET DrawString
Quelqu'un a eu des idées sur la façon de restreindre .NET pour ne pas casser mes mots?
Je suis actuellement en utilisant un code comme ceci:
internal static void PaintString(string s, int x, int y, int height, int maxwidth, Graphics g, bool underline)
{
FontStyle fs = FontStyle.Bold;
if (underline)
fs |= FontStyle.Underline;
Font fnt = new System.Drawing.Font("Arial", 18, fs);
SizeF size = g.MeasureString(s, fnt, maxwidth);
while (size.Height > height)
{
fnt = new System.Drawing.Font("Arial", fnt.Size - 1, fs);
size = g.MeasureString(s, fnt, maxwidth);
}
y = (int)(y + height/2 - size.Height/2);
g.DrawString(s, fnt, new SolidBrush(Color.Black), new Rectangle(x, y, maxwidth, height));
}
Mais j'ai un espace fixe que je ne veux pas redimensionner. Je veux réduire/encapsuler le texte pour qu'il corresponde – JanHudecek