如何使用c#淡入/淡出包含内容的面板

Som*_*ody 9 .net c# winforms

我有一个Panel作为容器,这个面板上有一张图片作为背景,在容器面板中,我有另一个面板,我会在标签中放入一些信息,这些信息会及时改变,我想要的是一个过渡时间新信息即将显示,使用旧信息淡出信息面板,然后使用新信息淡入同一面板.在淡出信息面板时,我将能够看到容器面板的背景图像.两个面板都有BorderStyle = FixedSingle,信息面板也有背景色.

现在我的问题是:有没有办法淡入/淡出信息面板和整个内容?

我正在网上搜索,我发现这种效果的方法与面板的背景颜色一起使用但它根本不起作用,此外,内容仍然存在,因为它们只是试图淡化backcolor属性:

Timer tm = new Timer();
    private void Form1_Shown(object sender, EventArgs e)
    {
        tm.Interval = 100;
        tm.Tick += new EventHandler(timer1_Tick);
        tm.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        int aa = 0;
        panel2.BackColor = Color.FromArgb(aa, 255, 0, 0);

        aa += 10;
        if (aa > 255)
            tm.Enabled = false;
    }
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

Rob*_* P. 3

我不相信你可以设置单个控件的不透明度。表单本身具有不透明度,但我认为您不想淡出整个控件。

您可以创建支持不透明度的自定义控件...这是一个示例: http ://www.slimee.com/2009/02/net-transparent-forms-and-controls-with.html

我相信此实现将适用于面板内的子控件(因为它正在控件占用的矩形区域上工作)。如果我错了,那么您必须将所有子控件作为您重写行为的一部分来处理。

正如其他人所说,让其看起来“平滑”可能需要做很多工作。希望有人能有更好的答案。