透明表格背景+ Alpha通道,用于在C#中移动窗口

时间:2013-09-09 21:20:17

标签: c# winforms background transparent

我正在尝试制作一个透明背景的表单**(不是“半可见”形式,而是带有“洞”的形式)。

现在,我已经成功制作了一个透明的背景(没有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通道(边缘“半透明像素”)

  • 当我移动表单时保持透明

任何建议都会很棒。

0 个答案:

没有答案