3
我有一個自定義控制,其中我重寫下面的方法來建立一個透明的背景:透明度繪製化合物層,而不是重繪
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x20;
return cp;
}
}
在塗料的方法,即時通訊做這樣的:
protected override void OnPaint(PaintEventArgs p)
{
base.OnPaint(p);
Graphics e = p.Graphics;
this.Size = Resources.CenterButtonHover.Size;
if (mousedown)
{
e.DrawImage(Resources.CenterButtonDown, new Point(0, 0));
}
else if (hover)
{
e.DrawImage(Resources.CenterButtonHover, new Point(0, 0));
}
else
{
e.DrawImage(Resources.CenterButtonNormal, new Point(4, 4));
}
e.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
}
並在調用this.Invalidate
的各種鼠標事件上。
透明度渲染正確,但每次渲染都會渲染到最後一次渲染的頂部而不是重繪。這會使輝光變得越來越激烈,直到它變成一個大斑點。我該如何解決?