2010-04-09 2 views
4

Кто-нибудь знает, как сделать ярлыки или текст более плавным? В настоящий момент они выглядят довольно зубчатыми. Поскольку я хочу сделать ярлык динамическим, я не могу просто вставить текст из Photoshop.Как сделать текст/этикетки гладкими?

+0

Можете ли вы дать нам картину? У вас включен ClearType? –

+0

http://d-load.org/Capture.PNG Это изображение ярлыка. Посмотрите, как это выглядит довольно неровным и грубым? –

ответ

14

Вам придется динамически генерировать изображения, представляющие ваш текст, если вы хотите сгладить его. Вот пример на msdn: http://msdn.microsoft.com/en-us/library/a619zh6z.aspx

EDIT: Редактирование для комментария ниже.

Ссылка описывает использование события OnPaint вашего элемента управления для использования другого TextRenderingHint. Если Вы желаете что-то немного больше повторного использования, что вы можете сделать, это создать класс пользовательского ярлыка, который расширяет класс этикетки, и использовать это в своих формах:

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

Добавить новый пользовательский элемент управления называется CustomLabel (или что бы вы ни назвали) и используйте приведенный выше код. Перестройте свой проект, и вы должны увидеть, как элемент управления CustomLabel отображается в панели инструментов вверху, в разделе «MyProject Components». На панели свойств этого пользовательского ярлыка вы увидите новое свойство TextRenderingHint. Установите для этого значение «AntiAlias». Добавьте еще одну метку в свою форму и сравните, как они выглядят.

Если вы хотите по умолчанию использовать AntiAlias, просто измените значение по умолчанию для частной переменной.

+0

О, извините. Я просто отклонил вашу идею, поскольку кто-то ее ниспровергал. Как именно я буду использовать это? Я продолжаю получать ошибки, когда пытаюсь их скомпилировать. –

+1

Ссылка переопределяет метод OnPaint, чтобы установить TextRenderHint для AntiAlias. См. Мое редактирование выше о том, как вы можете использовать это в многоразовом режиме. – zincorp

+0

Спасибо большое! Он отлично работает. Похоже, что этот «d-load.org/Capture.PNG» выглядит так: «d-load.org/Capture2.PNG», как и ваш пример. Не знаю, почему кто-то запустил тебя ... Спасибо еще раз! –

5

Вы имеете в виду ClearType? Затем в Windows должен быть включен ClearType, и вы должны использовать современный шрифт, такой как Tahoma или Segoe UI, а не MS Sans Serif.

Update

Вы писали an example проблемы. I magnified it to 400 %. Ясно ClearType субпиксельное сглаживание -. Лично я не думаю, что текст выглядит неровным. Если вы хотите получить более качественный текст на экране, вы можете купить экран с более высоким физическим разрешением (пикселей на дюйм), а затем нарисуйте текст размером (соответственно) большего размера. Тогда текст будет иметь тот же размер на вашем экране, но будет выглядеть гораздо более гладким.

Вы также можете отказаться от ClearType и использовать какой-либо другой алгоритм сглаживания шрифтов, но это далеко не тривиально, потому что ClearType - это система сглаживания шрифтов в Windows.

Update 2

Если вы работаете в Windows 7, вы можете точно настроить ClearType. Просто откройте меню «Пуск», напишите «ClearType» и запустите руководство. Я думаю, что есть руководства для Vista и XP тоже, но, возможно, не установлены по умолчанию, но доступны как PowerToys или что-то в этом роде.

+0

Включено. Я попробовал его с Tahoma и Segoe UI, но он все еще выглядит неровным. –

+0

Хорошо, спасибо. Это просто другие программы не имеют дряблого текста, с моими текущими настройками в ClearType. Я изменил настройки в ClearType и посмотрю, улучшится ли это. Еще раз спасибо. –

+0

У него включен ClearType. Проблема в том, что с большими шрифтами, cleartype выглядит плохо. Зачем?Потому что он пытается сделать ВСЕ острым, и эта резкость выглядит как наложение на шрифты около 24 + pt. –

Смежные вопросы