我有一个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”显示时磨损了 表格是在黑暗的背景下。对于浅色背景,文字是o.k。
此图显示了问题和好的情况:
(来源:habermann-net.de)
显然,Windows确实以适合的方式呈现文本 形成自己的背景颜色,而不是它适合的颜色 透明表格背后的背景。
是否有可能让Windows背后的背景 在渲染文本时考虑到表单以便我得到 摆脱边缘?
一个“解决方案”可能是通过设置TextRenderingHint来关闭抗锯齿 因此。但到目前为止,这不是我首选的“解决方案”。
系统:
Windows XP,SP 3,.NET 3.5,VS 2008
答案 0 :(得分:1)
我最终做的是有两个选择:
答案 1 :(得分:-1)
在您的Display_Paint方法中,试试这个:
this.SetStyle(ControlStyles.DoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint,
true);
this.UpdateStyles();