为什么我的Windows窗体string反锯齿时看起来很丑陋?

我在一个GraphicsBox的顶部手动渲染一些string,因为你不能有一个带有treansparent背景的Label。

无论我尝试使用哪种渲染模式,我都无法使string看起来很好(即,它们会出现在Word中或graphics程序中)。

下面是界面模型与屏幕上呈现的相比较的图片: 在这里输入图像说明

不幸的是StackOverflow似乎缩小了图片,所以这里也是一个直接链接: http : //i.stack.imgur.com/vYFaF.png

这里是用于渲染的代码:

private void pictureBox1_Paint(object sender, PaintEventArgs e) { Graphics labelDrawing = e.Graphics; labelDrawing.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit; labelDrawing.DrawString("Setup Progress", new Font("Calibri", 10, FontStyle.Bold, GraphicsUnit.Point, 0), new SolidBrush(Color.Black), new Point(12, 9)); labelDrawing.DrawString("The following components are being configured.", new Font("Calibri", 10, FontStyle.Regular, GraphicsUnit.Point, 0), new SolidBrush(Color.Black), new Point(24, 27)); } 

我已经尝试改变TextRenderingHint到每个选项,但无论我尝试如果有任何抗锯齿,然后它出现在模糊,像在屏幕截图中弄脏的混乱。 任何想法?

.NET中可以有透明的标签。
看看这篇关于如何在Windows窗体中使用透明图像和标签的 CodeProject上的文章

至于绘图问题, Calibri没有原生字体大小10.您可以在“控制面板” – >“字体”中进行验证。 最小的原始字体大小是12(至少在我的机器上)。 改变你的大小为12,你会看到它好多了。

当你不使用原生字体大小的时候,Windows / .NET / GDI +会尝试为你缩放字体。 这种缩放很可能会导致您的问题。