在将文本渲染到位图中时,我发现在具有非不透明 alpha 的区域顶部渲染时,文本看起来非常糟糕。随着底层像素变得更加透明,问题会越来越严重。如果非要我猜的话,我会说当底层像素是透明的时,文本渲染器会将任何消除锯齿的“灰色”像素绘制为纯黑色。
下面是一些截图:
绘制在透明像素之上的文本:
在半透明像素上绘制的文本:
在不透明像素上绘制的文本:
这是用于呈现文本的代码:
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/