c#picturebox中取点的问题

图片说明
如图,picture.Image中有四种不同颜色的点。如何圈取一部分点,再进行处理:变色,移动等,可假设这些点的坐标是已知的。我之前用的是for嵌套,但是效率太低,求高手指点,十分感谢。
for (int x = 0; x <= 1000; x++)
{
for (int y = 0; y <= 1000; y++)
if (region.IsVisible(x, y)) //region为选取的区域
{

                        bitmap.SetPixel(x, y, typeColor);
                        pictureBox1.Refresh();

                }
            }

已解决,问题在于把pictureBox1.Refresh();放在for循环之外就好了,这样点就不再是一个个显示,而是一起显示了。