【发布时间】:2012-02-21 13:24:15
【问题描述】:
又是一个调整大小的问题,像许多其他人一样,我使用 CreateParams 方法设置透明标签,一切看起来和工作都很好......除了调整表单大小时,文本消失了!
有人有什么想法吗?控件在那里,但文本没有显示,好像我最小化表单然后恢复它显示!
public class TransparentLabel : Label
{
public TransparentLabel()
{
this.SetStyle(ControlStyles.Opaque, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);
}
protected override CreateParams CreateParams
{
get
{
CreateParams parms = base.CreateParams;
parms.ExStyle |= 0x20; // Turn on WS_EX_TRANSPARENT
return parms;
}
}
protected override void OnPaintBackground(PaintEventArgs e)
{
if (base.BackgroundImage == null)
{
e.Graphics.DrawRectangle(new System.Drawing.Pen(this.BackColor, 1), e.ClipRectangle);
}
else
{
base.OnPaintBackground(e);
}
}
}
【问题讨论】:
-
这可能和你的other question有关。您的表单很可能会泄漏资源。就其本身而言,上面的示例代码不会重现该问题。
-
@LarsTech 谢谢你,我刚才发现了,但我看不到它在哪里泄漏资源。抱歉,GDI 对象一直保持在 85,但是我从某个地方泄漏了内存
-
我发现内存泄漏是已解决的报告查看器。仍然不知道为什么标签消失了:(
-
调整大小后可能是
myLabel.Invalidate()有帮助吗?
标签: c# winforms label transparency transparent