2010-04-09 8 views
4

Est-ce que quelqu'un sait comment rendre les étiquettes, ou le texte, plus lisse? En ce moment, ils ont l'air assez déchiquetés. Comme je veux rendre le label dynamique, je ne peux pas simplement insérer le texte de Photoshop.Comment rendre le texte/les étiquettes lisses?

+0

Pouvez-vous nous donner une image? Avez-vous ClearType activé? –

+0

http://d-load.org/Capture.PNG Thats une image d'une étiquette. Voyez-vous à quel point ça a l'air assez branlant et rugueux? –

Répondre

14

Vous devrez générer dynamiquement des images représentant votre texte si vous voulez l'anti-alias. Voici un exemple sur msdn: http://msdn.microsoft.com/en-us/library/a619zh6z.aspx

EDIT: Modification par commentaire ci-dessous.

Le lien décrit l'utilisation de l'événement OnPaint de votre contrôle pour utiliser un TextRenderingHint différent. Si vous êtes désireux de quelque chose d'un peu plus réutilisable ce que vous pouvez faire est de créer une classe d'étiquette personnalisée qui étend la classe d'étiquettes et utilisez dans vos formes:

public partial class CustomLabel : Label 
{ 
    private TextRenderingHint _hint = TextRenderingHint.SystemDefault; 
    public TextRenderingHint TextRenderingHint 
    { 
     get { return this._hint; } 
     set { this._hint = value; } 
    }   

    protected override void OnPaint(PaintEventArgs pe) 
    {    
     pe.Graphics.TextRenderingHint = TextRenderingHint; 
     base.OnPaint(pe); 
    } 
} 

Ajouter un nouveau contrôle personnalisé appelé CustomLabel (ou tout ce que vous voulez l'appeler) et utilisez le code ci-dessus. Reconstruisez votre projet et vous devriez alors voir le contrôle CustomLabel apparaître dans votre boîte à outils en haut, sous la catégorie "MyProject Components". Dans le volet des propriétés de cette étiquette personnalisée, vous verrez la nouvelle propriété TextRenderingHint. Réglez ceci sur "AntiAlias". Ajoutez une autre étiquette à votre formulaire et comparez leur apparence.

Si vous voulez par défaut à AntiAlias, il suffit de changer la valeur par défaut de la variable privée.

+0

Oh, désolé. Je viens de rejeter votre idée que quelqu'un l'avait downvoted. Comment pourrais-je utiliser cela? Je continue d'obtenir des erreurs lorsque j'essaie de le compiler. –

+1

Le lien remplace la méthode OnPaint pour définir TextRenderingHint sur AntiAlias. Voir ma modification ci-dessus sur la façon dont vous pourriez utiliser cela de manière réutilisable. – zincorp

+0

Merci beaucoup! Cela fonctionne très bien. Il est passé de ressembler à ceci "d-load.org/Capture.PNG" à ressembler à ceci "d-load.org/Capture2.PNG", juste comme votre exemple. Aucune idée pourquoi quelqu'un vous a rabaissé ... Merci encore! –

5

Faites-vous référence à ClearType? Puis ClearType doit être activé dans Windows, et vous devez utiliser une police moderne, comme Tahoma ou Segoe UI, pas MS Sans Serif.

Mise à jour

Vous posté an example du problème. I magnified it to 400 %. Clairement ClearType sous-pixel antialiasing est activé. Personnellement, je ne pense pas que le texte semble déchiqueté. Si vous voulez un texte à l'écran de qualité supérieure, vous pouvez acheter un écran avec une résolution physique plus élevée (pixels par pouce), puis dessiner le texte à une taille plus grande (de manière correspondante). Ensuite, le texte aura la même taille sur votre écran, mais aura l'air beaucoup plus lisse.

Vous pouvez également abandonner ClearType et utiliser un autre algorithme de lissage de polices, mais cela est loin d'être trivial, car ClearType est le système de lissage des polices sous Windows.

Mise à jour 2

Si vous utilisez Windows 7, vous pouvez affiner ClearType. Ouvrez simplement le menu Démarrer, écrivez "ClearType" et démarrez le guide. Je pense qu'il y a aussi des guides pour Vista et XP, mais peut-être pas installés par défaut, mais disponibles en PowerToys ou quelque chose comme ça ...

+0

C'est activé. Je l'ai essayé avec Tahoma et Segoe UI, mais ça a l'air encore un peu brouillon. –

+0

D'accord, merci. C'est juste que d'autres programmes n'ont pas de texte jaggy, avec mes paramètres actuels sur ClearType. Je vais changer les paramètres sur ClearType et voir si cela le rend mieux. Merci encore. –

+0

Il avait ClearType activé. Le problème est qu'avec les grosses polices, cleartype semble mauvais. Pourquoi?Parce qu'il essaie de rendre tout TOUT net, et que la netteté ressemble à un alias sur les polices d'environ 24 + pt. –

Questions connexes