これが私のコードです
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
ここで、ループの前半で作成した図面をワイプしたいと思います。つまり、最後の反復で描画された最後の図面を表示する必要はありません。私が使用する場合Graphics.clear(Color.SomeColor)
、各反復後に背景色全体が変化しますが、それはしたくありません。次に、以前と同じトラックで同じ線を描くが白い色(消しゴムとして機能するメソッドを意味する)のメソッドを宣言すると、コードが長くなりすぎてThread.Sleep()
、コードで使用する必要があるため、メモリと時間がかかりますいくつかの理由で。最後の図面を消去する他の方法はありますか?よろしくお願いします