淡入和淡出表单时透明颜色键'显示'

时间:2011-08-17 15:06:10

标签: c# winforms visual-studio-2008 transparency

毋庸置疑,我的GooglFu今天很弱。

我有一个小的WinForm,因为它的背景是一个不对称的图像。为了适应这种形象,表格本身比图像本身略大。

我将表单背景颜色设置为LightSalmon以及表单的TransparencyKey。

我认为发布代码(我认为它来自CodeProject)并不是完全必要的,但是,为了以防万一,我也包含了它。

FadeIn:

    private void opTimer_Tick(object sender, EventArgs e)
    {
        if (opacityIncrease > 0)
        {
            if (this.Opacity < 1)
                this.Opacity += opacityIncrease;
        }
        else
        {
            if (this.Opacity > 0)
                this.Opacity += opacityIncrease;
            else
                this.Close();
        }
    }

FadeOut(在formClosing事件中调用)

    public void FadeForm()
    {
        opacityIncrease = -opacityDecrease;
    }

代码可以正常工作,但问题出在表单淡入淡出时。随着表格淡入,我可以看到表格背景,那可怕的LightSalmon。一旦表单达到完全不透明度,背景确实是完全透明的。

有没有办法在淡入/淡出过程中保持TransparencyKey颜色(表单背景),透明?

最简单的解决方案是将表单背景图像更改为适合表单的表单,而不必担心整个TransparencyKey业务,但是,我更喜欢我正在使用的图像,但是,它肯定不是一个ShowStopper将其改为别的东西。

使用VS2008,.NET 3.5

一如既往,很高兴在必要时回答任何后续问题。

感谢。

1 个答案:

答案 0 :(得分:0)

我可以猜测Fadeout \ Fadein改变Pixel值,因此它不等于透明键。

只有当它相等时才会变得透明。

如果可以的话,尝试将淡入/淡出部分限制为不包括LightSalmon区域 - 它应保持相同的像素值并始终保持透明。