问题我找到了,当我把Button2,也就是扫描变色中的那句判断:
if(memImage.GetPixel(row,col)==tempcolor) 注释掉后,我变色变了800多次,都没有问题,嘿嘿.....但是这句在我的工作中是无论如何不能给注释掉的啊........  :( My God怎么半啊,唉.....不好搞,现在成了无差别变色了

解决方案 »

  1.   

    这个问题已经搞定了,但不算真正搞定:)  解决的代码如下:
    ///改写form2的Button2的代码,也就是扫描变色的代码,改动的地方都有"//"{
    Color c=Color.White;   //用来做临时量,它的初始化没用,只为编译不出错
    ColorDialog dlg=new ColorDialog();
    if(dlg.ShowDialog()==DialogResult.OK)
    {
       color=dlg.Color;   for (int row = 0; row < memImage.Width; row += 1)
       {
          for (int col = 0; col < memImage.Height; col += 1)
          {
             if(memImage.GetPixel(row,col)==tempcolor)
             {
                memImage.SetPixel(row, col,color);
                c=memImage.GetPixel(row,col);  //这里保存临时量
             }
          }
       }
       pictureBox1.Image = memImage;
       tempcolor=c;    //这里用临时量来转一下
       this.pictureBox1.Refresh();
    }
    }这个之所以要用个"c"来转一下,因为如果不转的话,color从dlg.color得到的颜色有时候可能是0x0,特别是白色时,大家都知道白色是0xffffffff,但从那个该死的dlg.color中得到的白色是0x0,真变态,所以下次比较的时候,0x0当然和所有的RGB色都不相同,所以变不了色了,至于为什么会得到0x0,还没想通.欢迎大家发言:)