这里绘制图纸是我的代码我需要擦除循环
while (true)
{
gg = this.CreateGraphics();
b1 = new SolidBrush(Color.Red);
b2 = new SolidBrush(Color.Blue);
p1 = new Pen(Color.Red);
neuron.transferFunction_output();
for (int i = 0; i < 10; i++)
{
if (neuron.layer2[i] == 1)
{
gg.FillEllipse(b1, ox1 - 100 * i, oy2, (float)20, (float)20);
for (int j = 0; j < 10; j++)
{
gg.DrawLine(p1, ox1 - 100 * i, oy2, ox1 - 100 * (float)j, oy3);
}
}
else
{
gg.FillEllipse(b2, ox1 - 100 * i, oy2, (float)20, (float)20);
}
}
for (int i = 0; i < 10; i++)
{
if (neuron.layer3[i] == 1)
{
gg.FillEllipse(b1, ox1 - 100 * i, oy3, (float)20, (float)20);
for (int j = 0; j < 10; j++)
{
gg.DrawLine(p1, ox1 - 100 * i, oy3, ox1 - 100 * (float)j, oy4);
}
}
else
{
gg.FillEllipse(b2, ox1 - 100 * i, oy3, (float)20, (float)20);
}
}
for (int i = 0; i < 10; i++)
{
if (neuron.layer4[i] == 1)
{
gg.FillEllipse(b1, ox1 - 100 * i, oy4, (float)20, (float)20);
for (int j = 0; j < 10; j++)
{
gg.DrawLine(p1, ox1 - 100 * i, oy4, ox1 - 100 * (float)j, oy5);
}
}
else
{
gg.FillEllipse(b2, ox1 - 100 * i, oy4, (float)20, (float)20);
}
}
for (int i = 0; i < 10; i++)
{
if (neuron.layer5[i] == 1)
{
gg.FillEllipse(b1, ox1 - 100 * i, oy5, (float)20, (float)20);
}
else
{
gg.FillEllipse(b2, ox1 - 100 * i, oy5, (float)20, (float)20);
}
}
Thread.Sleep(1000);
Application.DoEvents();
}//end while
现在我想抹在loop.Means我不需要证明最近的画图,在最后绘制早些时候提出的图纸迭代。如果我使用Graphics.clear(Color.SomeColor)
,那么整个背景颜色在每次迭代后都会改变,我不想这样做。其次,如果声明一个方法在同一轨道上绘制相同的线条,但用白色(意味着作为橡皮擦的一种方法)绘制相同的线条,那么我的代码会变得太长,并且其记忆需要花费时间,因为我必须在我的代码中使用Thread.Sleep()
由于某些原因。 有没有其他的方法可以清除最后的图纸? 感谢有关
这被称为“游戏循环”。需要一些工作。 – 2012-07-30 17:29:38
@HansPassant:游戏循环不需要在OnPaint处理程序之外执行绘制(但您当然知道这一点......我不确定您是否意味着我的响应需要某些工作或OP的代码)。 – 2012-07-30 17:30:56
但是当我写this.createGraphics()然后编译器这应该是一个初始化。其次,请稍微解释一下“OnPaint”处理程序。坦率地说,我第一次听到这个消息 – 2012-07-30 17:36:51