Как сделать это более эффективно?Как я могу сделать более эффективно?
Я могу чувствовать отставание, когда я вызываю код ниже. ПРИМЕЧАНИЕ. Это касается редактирования пикселов и не очистки экрана.
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);
}
мой вопрос о доступе к пикселам, а не об очистке экрана. (вопрос редактирования) – 2009-07-08 01:22:06
Код не очищает экран, он устанавливает каждый пиксель в объекте Bitmap указанному цвету. Точно так же, как то, что делает ваш код, только намного быстрее. – Guffa