我正在清除具有透明颜色(120 alpha)的图像,然后使用渐变在其上绘制一个字符串,然后将该图像绘制到更大的图像上,但文本有黑色边缘而不是漂亮和像它应该的那样光滑。如果使用 255 alpha 绘制背景,文本看起来不错。
120 阿尔法:Image
255 阿尔法:Image
如您所见,文本在完全不透明的背景下更易于阅读
注意:绿点是我的光标
编辑:gfx.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
移除黑边但它很模糊,我会尝试一些其他的图形设置组合,看看效果如何。
编辑:gfx.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
看起来好多了,虽然 Arial 字体中的 A 看起来有点古怪
最佳答案
这是正常行为。你必须改变你的绘图顺序才能正确。
由于您将文本绘制到半透明表面上,因此其抗锯齿像素也将是半透明的,但介于文本颜色和第一张图像的背景之间。
现在,如果您将结果绘制到另一幅图像上,您将在没有文本的地方拥有统一的透明像素,在文本所在的地方没有透明度,并且抗锯齿像素的透明度和颜色不同。
请注意,由于抗锯齿试图分散颜色差异和亮度差异,因此这些颜色会有不同。
要么在不透明的表面上书写,要么延迟书写到最后。 (或者关闭所有抗锯齿。但这并不好。)
关于c# - GDI+ 文本有黑边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6259670/