【问题标题】:c# - Transparent form doesn't show text properlyc# - 透明表单无法正确显示文本
【发布时间】:2011-12-10 13:03:30
【问题描述】:
我的项目的想法是在透明的表单控件上显示纯文本。
我已经使用这种技术使表单透明:
BackColor = Color.Lime;
TransparencyKey = Color.Lime;
我遇到的问题是文本周围的彩色边缘。我尝试使用图形绘制抗锯齿文本并使用标签显示文本,但均未奏效。我的文字周围仍然有令人作呕的像素化石灰边缘。
我环顾四周 - 帖子通常涉及使表单透明而不是处理这个问题。
【问题讨论】:
标签:
c#
forms
text
controls
transparency
【解决方案1】:
你可以通过TextRenderingHint.AntiAliasGridFit得到合理的输出。
private void TestForm_Paint(object sender, PaintEventArgs e) {
e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
e.Graphics.DrawString("Header", this.Font, SystemBrushes.WindowText, new Point(1, 1));
}
但如果您打算使用大字体,它的渲染效果不会太好,因为它不能真正antialias 正确地。
一般来说,字体的本质是有一个可以绘制的背景。如果您在透明表单上有黑色文本,而最终用户有黑色背景 - 最终用户将看不到任何内容。