我有一个用户控件,其中包含一个名为 panel1 的面板。有一条指令在panel1_paint
面板上画了一些线,我将在下面的行中以窗口形式执行绘画事件:
注意:DrawLines 已在 UserControl1.CS 中定义
public void DrawLines()
{
...
...
panel1.Invalidate();
}
我不知道为什么这不会运行,也许它画线然后面板刷新,这使得面板被清除。所以我将代码更改为:
public void DrawLines()
{
...
...
panel1_Paint(this, new PaintEventArgs(panel1.CreateGraphics(),
panel1.ClientRectangle));
}
这很好用。它在面板中绘制了一些线条,现在主要部分是:他们将在面板上作为子项在运行时创建一些对象。我想将它们移到面板上(例如假设有火粒子)。因此,当我将它们移动(动画)时,如果面板上的任何对象(粒子)在它们上方移动,timer
则由 Paint Event 绘制的线条将被清除并移除。e.Graphics
那么我该如何避免这种情况呢?!我的失效有什么问题吗?我怎样才能在面板上同时拥有线条和移动粒子?面板已经做了图形,但是为什么在上面移动物体,图形会被移除呢?