1

在我的 WinForm 应用程序中,我绘制了一个System.Drawing.Bitmap. 我从 LOGFONT 创建字体并使用 GDI 函数 ExtTextOutW 进行绘制。但是输出很糟糕。它有不好的锯齿,看起来抗锯齿器在 LSD 上。阅读这似乎是一个常见问题 - 有解决方案吗?

如果我使用:

lf.lfQuality = FontQuality.NONANTIALIASED_QUALITY

当我创建字体时,可怕的锯齿消失了,但当然没有抗锯齿。

有没有办法用 ExtTextOutW 在位图中创建平滑的文本?

4

1 回答 1

1

这是可能的,但有点棘手,它不能有透明的背景。您将需要:

  1. 创建与显示设备上下文兼容的内存位图缓冲区(IntPtr.Zero 句柄)
  2. 用纯色或其他背景填充缓冲区背景
  3. 将文本渲染到内存位图中
  4. 从内存位图复制到图像设备上下文 (BitBlt)

有关详细信息,请参阅GDI 文本渲染到图像

于 2014-05-31T14:39:20.287 回答