Текст GDI + имеет черный край - PullRequest
3 голосов
/ 07 июня 2011

Я очищаю изображение прозрачным цветом (120 альфа), затем рисую на нем строку с градиентом, а затем рисую это изображение на большом изображении, но текст имеет черноватый край, вместо того, чтобы быть красивым и гладко, как и должно быть. Текст выглядит хорошо, если фон нарисован с 255 альфа.

120 Альфа: Изображение

255 Альфа: Изображение

Как видите, текст намного легче читать с полностью непрозрачным фоном

Примечание: зеленая точка - мой курсор

Редактировать: gfx.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; удаляет черные края, но это размыто, я попробую некоторые другие комбинации настроек графики и посмотрю, как это происходит.

Редактировать: gfx.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit; Выглядит намного лучше, хотя буквы A в шрифте Arial выглядят немного прикольными

1 Ответ

0 голосов
/ 13 апреля 2014

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

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

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

Обратите внимание, что они будут иметь различные цвета, так как сглаживание пытается распространить цветовые различия, а также различия в яркости.

Либо пишите на непрозрачной поверхности, либо задерживайте запись до конца.(Или отключите сглаживание. Но это нехорошо.)

...