Я хотел бы нарисовать сглаженный текст на прозрачном растровом изображении и получить сглаживание в виде альфа-смешанных пикселей. Таким образом, я могу нарисовать растровое изображение на любой цветной поверхности (или изображение, если на то пошло), и сглаживание все еще выглядит хорошо.Сглаженный текст на прозрачном растровом изображении
Вот упрощенный пример, показывающий проблему:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Bitmap bitmap = new Bitmap(this.Width, this.Height);
Graphics g = Graphics.FromImage(bitmap);
g.Clear(Color.Empty);
g.DrawString("hello world", new Font(this.Font.FontFamily, 24), Brushes.Blue, new Point(50, 50));
e.Graphics.DrawImage(bitmap, new Point(0, 0));
}
И вот результат:
alt text http://img194.imageshack.us/img194/9065/captureotd.png
Конечная цель заключается в использовании UpdateLayeredWindow нарисовать мой прозрачный альфа смешан окно. Я создаю приложение, подобное Conky, и я бы хотел использовать рендеринг ClearType для текста (это, конечно, легко без сглаживания).
В настоящее время я хватаю экран за формой, рисую это, а затем рисую текст. Он выглядит хорошо, но его нужно обновлять и медленно рисовать. Любые другие идеи для выполнения рисования текста на рабочем столе также приветствуются.
Это сработало, спасибо! Это не совсем так, как ClearType, но даже шрифты, разработанные для ClearType (например, Consolas), все еще выглядят хорошо. – iano
Любопытно, что для меня «AntiAliasGridFit» создает текст с нулевым сглаживанием. Однако «AntiAlias» работает. –
'AntiAliasGridFit' может не делать сглаживания, если размер шрифта слишком мал. При таких размерах шрифта, «AntiAlias» дает уродливый результат в любом случае. –