c# - 在透明像素上使用 DrawString 呈现错误的文本

标签 c# winforms gdi+ system.drawing drawstring

在将文本渲染到位图中时,我发现在具有非不透明 alpha 的区域顶部渲染时,文本看起来非常糟糕。随着底层像素变得更加透明,问题会越来越严重。如果非要我猜的话,我会说当底层像素是透明的时,文本渲染器会将任何消除锯齿的“灰色”像素绘制为纯黑色。

下面是一些截图:

绘制在透明像素之上的文本:

alt text

在半透明像素上绘制的文本:

alt text

在不透明像素上绘制的文本:

alt text

这是用于呈现文本的代码:

g.SmoothingMode = SmoothingMode.HighQuality;
g.DrawString("Press the spacebar", Font, Brushes.Black, textLeft, textTop);

最佳答案

我用来解决这个问题的选项是:

Graphics graphics = new Graphics();
graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;

TextRenderingHint 中还有其他一些有用的选项

希望对你有帮助

关于c# - 在透明像素上使用 DrawString 呈现错误的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2991490/

相关文章:

c# - Visual Studio 文件选择器

c# - 如何在 .NET 中承载无窗口 ActiveX 控件

graphics - GDI+中是否有等效的软笔?

c# - 透明背景的用户控件

c# - 如何缩放字体以适合指定的矩形

c# - 使用 C# Access 数据库

c# - 有没有办法通过 UserPrincipal 类设置新用户的域后缀?

c# - c#中list<>和dictionary<>有什么区别

c# - 如何将多个 RichTextBox 内容写入一个 RTF 文件并保留每个 RichTextBox 的字体格式

c# - 隐藏一个组框并删除它在 winform 中存在的空间