我正在尝试制作一个透明背景的表单**(不是“半可见”形式,而是带有“洞”的形式)。
现在,我已经成功制作了一个透明的背景(没有ALPHA频道)和一个带有alpha通道的背景,但是一个在表单移动时不刷新的。
以下是我添加到表单中的代码:
protected override void OnPaintBackground ( PaintEventArgs e ) {
Graphics gfx = e.Graphics;
gfx.DrawImage(this.BackgroundImage, new Rectangle(0, 0, this.Width, this.Height));
}
private void Form1_Paint ( object sender, PaintEventArgs e ) {
Graphics gfx = e.Graphics;
gfx.DrawImage(this.BackgroundImage, new Rectangle(0, 0, this.Width, this.Height));
}
这里的问题是,当我使用计时器移动窗口时(通过更改其“左”属性),背景保持不变(不刷新孔下方的图片)。
我确定调用了Paint函数,我甚至添加了
this.Invalidate();
this.Update();
this.Refresh();
this.Show();
到计时器 - 以防万一:)(这是我在其中一篇文章中读到的建议)
基本上问题是背景在移动时不会刷新。
在我来到这里之前,我读了大约30篇关于这个主题的文章,所以我会以更好的方式写下我想要实现的内容,形式假设为:
具有透明背景(“洞”)
支持Alpha通道(边缘“半透明像素”)
当我移动表单时保持透明
任何建议都会很棒。