c# - GDI+ 文本有黑边

标签 c# .net image gdi+

我正在清除具有透明颜色(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/

相关文章:

c# - 让工作线程等待任务的 CPU 效率最高的方法是什么?

c# - JQuery.Ajax 和 MVC4

.net - .Net @ VS 中使用 MySQL 准备的语句?

javascript - 页面加载后出现 Logo 图像该怎么办?

c++ - 在 C 或 C++ 中打开 jpeg 或 png 图像作为像素数据

python - 读取多个图像并将其存储到单个numpy数组中的最快方法

c# - 使用单例模式 Linq to Sql 数据上下文

c# - GridControl 不断抛出无效路径异常

c# - 错误 403 Google API 电子邮件设置 .Net 正在获取签名

c# - ReflectionOnlyGetType 与 GetType