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

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

5
задан John Saunders 8 January 2013 в 03:15
поделиться

3 ответа

Вам придется динамически генерировать изображения, представляющие ваш текст, если вы хотите сделать его антиалиасным. Вот пример на 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". Добавьте еще одну метку в форму и сравните, как они выглядят.

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

15
ответ дан 18 December 2019 в 07:53
поделиться

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

0
ответ дан 18 December 2019 в 07:53
поделиться

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

Обновление

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

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

Обновление 2

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

5
ответ дан 18 December 2019 в 07:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: