這裏繪製圖紙是我的代碼我需要擦除循環
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