2015-08-26 1 views
0

La méthode Graphics.MeasureString(string, Font) n'est pas précise sur Windows Mobile. Y a-t-il une solution au problème?La méthode Graphics.MeasureString n'est pas précise sur Windows Mobile

public static string GetSubString(Graphics graphic, Font font, 
                string text, int availableWidth) 
{ 
    string tempString = string.Empty; 

    Size stringSize = graphic.MeasureString(text, font).ToSize(); 
    if (stringSize.Width < availableWidth) 
    { 
     return text; 
    } 

    for (int index = text.Length-1; index > 3; index--) 
    { 
     tempString = string.Format("{0}...", text.Substring(0, index)); 

     Size tempStringSize = graphic.MeasureString(tempString, font).ToSize(); 
     if (tempStringSize.Width < availableWidth) 
     { 
      return tempString; 
     } 
    } 
} 

La méthode renvoie une taille incorrecte, ne correspondant pas à la largeur de l'étiquette.

+3

Avez-vous lu le __Remarks__ dans le lien que vous avez donné? Les problèmes sont-ils différents de ceux prévus? Décris-les! – TaW

Répondre

0

Graphics.MeasureString est précis seulement si vous utilisez Graphics.DrawString.

Est-ce un Windows.Forms.Label? Ensuite, il utilise Graphics.DrawString uniquement si la propriété UseCompatibleTextRendering est vraie. Sinon, vous devez utiliser les méthodes TextRenderer.MeasureText et TextRenderer.DrawText à la place.

+0

Ceci est à propos de Windows Mobile pas winforms! – TaW

+0

Il utilise toujours les classes GDI + pour une raison quelconque ... – taffer

+0

@taffer 'TextRenderer' n'est même pas disponible dans le Compact Framework. –