用户控件在动画时具有透明背景色,它是不可见的

时间:2014-01-13 07:44:14

标签: c# .net winforms

我创建了一个具有透明背景的usercontrol。我在Windows窗体上使用此usercontrol,并在单击按钮时对控件执行一些动画操作。 myctrl是以windows窗体创建的usercontrol。以下是代码:

private void button1_Click(object sender, EventArgs e)
{
            Point p1 = new Point(myctrl.Location.X, myctrl.Location.Y);

            for (int i = 0; i < 100; i++)
            {
                myctrl.Location = new Point(p1.X + i, p1.Y + i);

                myctrl.Update();
                pictureBox1.Update();
                i++;
                Thread.Sleep(100);
            }
}

问题:一旦循环开始,usercontrol就不可见,并且循环结束时控件是可见的。 另外,我将控件放在winforms上的图片框中。

1 个答案:

答案 0 :(得分:1)

也许您必须使用Refresh而不是Update

或者,一旦您阅读AnimateWindow,就可以完全改变您的操作方式。

修改

我必须盲目地注意你的动画没有明确的问题。关键是,你一次做到这一点(天真的Thread.Sleep)。当你这样做时,重新绘制被阻止(即使你打电话给Refresh你也看不到结果)。所以,是的,在动画期间,没有任何可见的东西。

您需要做的是将动画(更可能使用Timer)分割成帧并一次只显示一帧。