运行VS2005程序,错误提示:具有索引像素格式的图像不支持 SetPixel。
部分代码如下:
private void button1_Click(object sender, EventArgs e)
        {
            if (curBitmapSD != null&curBitmapSB!=null) 
            {
                Color curColorSD;
                Color curColorSB;
                int ret;
                for (int i = 0; i < curBitmapSD.Width; i++) 
                {
                    for (int j = 0; j < curBitmapSB.Height; j++) 
                    {
                        curColorSD = curBitmapSD.GetPixel(i, j);
                        curColorSB = curBitmapSB.GetPixel(i, j);
                        ret = curColorSD.R - curColorSB.R;
                        curBitmapSD.SetPixel(i, j, Color.FromArgb(ret, ret, ret));
                    }
                }
                Invalidate();
            }
        }
图像curBitmapSD和图像curBitmapSD均为8位索引颜色图像。
求助高手解答:针对这样的图像,我应该如何做两个图像相减?

解决方案 »

  1.   

    改为这样试试
     //新加
            private Bitmap curBitmapNew = new Bitmap(20, 20);        private void button1_Click(object sender, EventArgs e)
            {
                if (curBitmapSD != null & curBitmapSB != null)
                {
                    Color curColorSD;
                    Color curColorSB;
                    int ret;
                    for (int i = 0; i < curBitmapSD.Width; i++)
                    {
                        for (int j = 0; j < curBitmapSB.Height; j++)
                        {
                            curColorSD = curBitmapSD.GetPixel(i, j);
                            curColorSB = curBitmapSB.GetPixel(i, j);
                            ret = curColorSD.R - curColorSB.R;
                            curBitmapNew.SetPixel(i, j, Color.FromArgb(ret, ret, ret));
                        }
                    }
                    //新加
                    curBitmapSD = curBitmapNew;                Invalidate();
                }
            }
      

  2.   

    不好意思,一句写错了

    private Bitmap curBitmapNew = new Bitmap(20, 20);
    改为
    private Bitmap curBitmapNew = new Bitmap(curBitmapSD.Width, curBitmapSD.Height);
      

  3.   

    图像curBitmapSD和图像curBitmapSD均为8位索引颜色图像。
    求助高手解答:针对这样的图像,我应该如何做两个图像相减?这个问题我也有点想知道,不知道别人都是怎样去实现的
      

  4.   

    图像的原始数据不是真正象素的值,而是索引值
    调整为RGB
      

  5.   

    图像curBitmapSD和图像curBitmapSD均为8位索引颜色图像。
    求助高手解答:针对这样的图像,我应该如何做两个图像相减?这个问题我也有点想知道,不知道别人都是怎样去实现的