如何使用ExtTextOut在位图上创建抗锯齿文本
本文关键字:文本 创建 何使用 ExtTextOut 位图 | 更新日期: 2023-09-27 18:23:58
在我的WinForm应用程序中,我绘制成System.Drawing.Bitmap
。我从LOGFONT创建字体,并使用GDI函数ExtTextOutW绘制。然而,产出却很糟糕。它有严重的锯齿,看起来像是LSD上的抗锯齿。阅读这篇文章似乎是一个常见的问题——有解决方案吗?
如果我使用:
lf.lfQuality = FontQuality.NONANTIALIASED_QUALITY
当我创建字体时,可怕的锯齿消失了,但当然没有抗锯齿。
有没有一种方法可以用ExtTextOutW在位图中创建平滑文本?
这是可能的,但有点棘手,因为它不能有透明的背景。您需要:
- 在内存中创建与显示设备上下文兼容的位图缓冲区(IntPtr.Zero句柄)
- 用纯色或其他背景填充缓冲区背景
- 将文本渲染到内存位图中
- 从内存中位图复制到图像设备上下文(BitBlt)
有关更多详细信息,请参阅GDI文本渲染到图像。