0

我正在尝试制作具有透明背景的表格**(不是“半可见”表格,而是带有“孔”的表格)。

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

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

任何建议都会很棒。

4

0 回答 0