Плохое отображение текста с использованием DrawString поверх прозрачных пикселей

Это то, что вы хотите:

div{
    background-color: black;
    width: 500px;
    height: 200px;
    border-radius: 0 0 50% 50% / 15%;
}

jsFiddle demo

30
задан Ahmed Abdelhameed 14 May 2019 в 09:37
поделиться

1 ответ

Первый вывод - это то, что получается, когда вы рисуете черный текст на черном фоне, вероятно, Color.Transparent. Второй был нарисован на почти черном фоне. Третий был нарисован на том же фоне, на котором он отображается.

Сглаживание не может работать на прозрачном фоне. Цвета, используемые для пикселей сглаживания, не будут сливаться с фоном при отображении текста на другом фоне. Эти пиксели станут очень заметными и заставят текст выглядеть очень плохо.

Обратите внимание, что SmoothingMode не влияет на вывод текста. Текст будет выглядеть не так плохо, если вы используете TextRenderingHint более низкого качества и цвет фона сероватый с альфой, равной нулю. Только TextRenderingHint.SingleBitPerPixelGridFit позволяет избежать всех проблем со сглаживанием.

Получить идеальное исправление для этого очень сложно. Эффект стекла в строке заголовка окна в Vista использует очень тонкое затенение, чтобы придать тексту четко определенный цвет фона. Чтобы увидеть это, вам понадобится инструмент ZoomIt компании SysInternals. Функция DrawThemeTextEx() с ненулевым iGlowSize.

12
ответ дан 27 November 2019 в 23:47
поделиться
Другие вопросы по тегам:

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