【发布时间】:2010-12-06 05:56:57
【问题描述】:
我在 GraphicsBox 上手动渲染一些字符串,因为你不能有一个带有透明背景的标签。
无论我尝试哪种渲染模式,我都无法让字符串看起来很好(即它们会出现在 Word 或图形程序中。
这是与屏幕上呈现的界面模型相比的图片:
不幸的是 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 依次更改为每个选项,但无论我尝试什么,如果有任何抗锯齿功能,它就会像屏幕截图中那样呈现模糊、模糊的混乱状态。有什么想法吗?
【问题讨论】:
-
我使用了具有透明背景的标签。将标签的 BackColor 属性设置为透明时遇到过什么样的问题?
-
将 BackColour 设置为透明只会给我一个灰色背景,显然这是由于标签总是拾取其父控件的背景。 ParmesanCodice 在他的评论中的链接显示了类似的现象。
-
很奇怪。我想我只使用从绘制自己背景的表单派生的表单来完成此操作,因此从技术上讲,标签正在获取其父级的背景,看起来还不错。
标签: windows winforms forms antialiasing