gpt4 book ai didi

c# - 在 .NET 中绘制文本

转载 作者:可可西里 更新时间:2023-11-01 03:07:07 34 4
gpt4 key购买 nike

我正在做一些关于在 .Net 中绘制文本的测试,我得到了以下结果。

Drawing text example

所有案例都使用默认的 Windows Vista/7 字体:Segoe UI, 9

如您所见,第二个字符串与其他字符串之间存在差异(质量较差,抗锯齿不同)。我尝试在 Graphics 对象中配置抗锯齿和平滑模式,但没有任何结果。

是否可以使用 Graphics.DrawString 绘制文本并获得与其他方法相同的质量?

提前致谢。


编辑:我已经用 Reflector 检查了代码。我意识到 Graphics.DrawString 使用 gdiplus.dll 调用方法 GdipDrawString() 和 TextRenderer.DrawText 使用 user32.dll 调用 DrawTextExWDrawTextExA

对此有何评论?

最佳答案

GDI+ 是 Microsoft 首次尝试呈现与分辨率无关的文本。并且是在 .NET 1.x 中呈现文本的唯一方法。它因其质量问题而受到广泛批评,激发了 .NET 2.0 中 TextRenderer 和 Application.SetCompatibleTextRenderingDefault() 的引入。它使用GDI绘制文本,有效解决了上述问题。您应该只在高分辨率设备上使用 Graphics.DrawString()。打印机。

Fwiw,第二次尝试是 WPF,它也因模糊文本问题而受到很多批评。在 .NET 4 中解决。

试试这个示例表单,看看最严重的问题之一:

public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e) {
e.Graphics.DrawString("Hiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
this.Font, Brushes.Black, 0, 0);
}
}

关于c# - 在 .NET 中绘制文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7268238/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com