У меня есть пользовательский элемент управления, в котором я переопределяю следующий метод для создания прозрачного фона:
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
.
Прозрачность отображается правильно, но каждый раз, когда она отображается, она отображается поверх последнего отображения вместо перерисовки.Это заставляет свечение становиться все более и более интенсивным, пока оно не станет просто большой каплей.Как мне это исправить?