c# - 透明表单不能正确显示文本

时间:2011-12-10 13:03:30

标签: c# forms text controls transparency

我的项目的想法是在透明表单控件上显示纯文本。

我使用此技术使表单透明:

BackColor = Color.Lime;
TransparencyKey = Color.Lime;

我遇到的问题是文本周围的彩色边缘。我尝试使用图形绘制消除锯齿的文本,并使用标签显示文本,但都没有工作。我的文字周围仍然有令人厌恶的,像素化的石灰边缘。

我环顾四周 - 帖子通常关注的是让表格透明而不是处理这个问题。

1 个答案:

答案 0 :(得分: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

一般来说,字体的本质是要有一个背景来绘制。如果您在透明表单上有黑色文本,并且最终用户有黑色背景 - 最终用户将不会看到任何内容。