Как сделать текст/метки гладкими?

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


person Joey Morani    schedule 09.04.2010    source источник
comment
Можешь дать нам картинку? У вас включен ClearType?   -  person Ron Warholic    schedule 09.04.2010
comment
d-load.org/Capture.PNG Это изображение ярлыка. Видите, как он выглядит довольно неровным и грубым?   -  person Joey Morani    schedule 09.04.2010


Ответы (4)


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

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

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

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». На панели свойств для этой пользовательской метки вы увидите новое свойство TextRenderingHint. Установите это на «Сглаживание». Добавьте еще одну метку в форму и сравните, как они выглядят.

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

person zincorp    schedule 09.04.2010
comment
Ой, извини. Я просто отклонил вашу идею, поскольку кто-то за нее проголосовал. Как именно я буду использовать это? Я продолжаю получать ошибки, когда пытаюсь скомпилировать его. - person Joey Morani; 10.04.2010
comment
Ссылка переопределяет метод OnPaint, чтобы задать для TextRenderingHint значение AntiAlias. См. мое редактирование выше о том, как вы можете использовать это повторно. - person zincorp; 10.04.2010
comment
Большое спасибо! Это прекрасно работает. Он изменился с d-load.org/Capture.PNG на d-load.org/Capture2.PNG, как в вашем примере. Понятия не имею, почему кто-то проголосовал за вас... Еще раз спасибо! - person Joey Morani; 10.04.2010

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

Обновить

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

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

Обновление 2

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

person Andreas Rejbrand    schedule 09.04.2010
comment
Это включено. Я пробовал его с Tahoma и Segoe UI, но он все еще выглядит неровным. - person Joey Morani; 09.04.2010
comment
Хорошо спасибо. Просто в других программах нет неровного текста, с моими текущими настройками на ClearType. Я изменю настройки ClearType и посмотрю, станет ли это лучше. Спасибо еще раз. - person Joey Morani; 09.04.2010
comment
У него был включен ClearType. Проблема в том, что с большими шрифтами cleartype выглядит плохо. Почему? Потому что он пытается сделать ВСЕ резким, и эта резкость выглядит как наложение на шрифты около 24+pt. - person Camilo Martin; 27.08.2010

Убедитесь, что у вас включен параметр ClearType.

person xian    schedule 09.04.2010

Установите программу MacType, она сглаживает ваш шрифт Windows, как MacOS, я не знаю, почему Microsoft не исправляет свой шрифт Windows Smoothness? Если бы Microsoft исправила свои шрифты, мне не нужно было бы устанавливать стороннее приложение для таких вещей, как то, что является фундаментальным для Windows.

person Rebwar    schedule 25.07.2018