Как сделать текст / метки гладкими? - PullRequest
5 голосов
/ 09 апреля 2010

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

Ответы [ 4 ]

15 голосов
/ 09 апреля 2010

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

РЕДАКТИРОВАТЬ: редактирование по комментарию ниже.

Ссылка описывает использование события 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 ​​по умолчанию, просто измените значение по умолчанию для закрытой переменной.

5 голосов
/ 09 апреля 2010

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

Обновление

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

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

Обновление 2

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

0 голосов
/ 25 июля 2018

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

0 голосов
/ 09 апреля 2010

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

...