これをより効率的に描くにはどうすればよいですか?どのように私はより効率的に描画するのですか?
私は以下のコードを呼び出すと、遅れを感じることができます。注:これは、ピクセルの編集に関するもので、画面をクリアしないものです。
int colorIndex = 0;
private void pictureBox1_Click(object sender, EventArgs e)
{
if (colorIndex == 0)
draw(Color.DimGray);
else if(colorIndex ==1)
draw(Color.ForestGreen);
colorIndex++;
colorIndex = colorIndex % 2;
pictureBox1.Invalidate();
//pictureBox1.Update();
}
void draw(Color c)
{
//var bdata = b.LockBits(Rectangle.Empty, System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
//var px = bdata.Scan0;
var px = b;
{
for (int y = 0; y < b.Height; y++)
{
for (int x = 0; x < b.Width; x++)
//px[y * b.Width + x] = -1;
px.SetPixel(x, y, c);
}
}
//b.UnlockBits(bdata);
}
私の質問は、ピクセルアクセスについてであり、画面をクリアすることではありません。 –
コードは画面をクリアしていないので、Bitmapオブジェクトのすべてのピクセルを指定した色に設定しています。あなたのコードが行っていることとまったく同じですが、ずっと速いです。 – Guffa