我有一个 C# 应用程序,它显示当前时间
透明的.NET 表单。该表单没有控件,也没有边框。
其属性 TransparencyKey 设置为 Form 的背景颜色
“浅灰色”使其透明。
所以用户只能看到文本(当前时间)。
文本在 PaintEventHandler 中绘制:
private void Display_Paint( object sender, PaintEventArgs e )
{
Graphics formGraphics = e.Graphics;
Font myFont = new Font( "Microsoft Sans Serif", 24, FontStyle.Bold );
formGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
//formGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
formGraphics.DrawString( "00:00:00", myFont, Brushes.Green, 0.0F, 0.0F );
myFont.Dispose();
}
由于抗锯齿,文本“00:00:00”在
表格位于深色背景之上。对于浅色背景,文本是可以的。
该图显示了问题和好的案例:
(source: habermann-net.de)
显然 Windows 确实以适合的方式呈现文本
表单自己的背景颜色,并且不适合
透明表单后面的背景。
是否可以让Windows做后台
渲染文本时考虑表单,以便我得到
摆脱边缘?
一种“解决方案”可能是通过设置 TextRenderingHint 来关闭抗锯齿功能
因此。但到目前为止,这还不是我首选的“解决方案”。
System:
Windows XP、SP3、.NET 3.5、VS 2008