我在窗口上画了4个picturebox
一个用来放置原图
三个用来放置RGB通道的图片,类似PS一样。我认为我代码应该没写错,不过现实出来的问题是:三个picturebox全都现实的R通道(因为R获取在循环最后一句)。
如果我把G通道获取放在循环最后一句 三个picturebox全都会显示G通道。
我是新手,这也是我第一次发帖,恳请大家的帮助。附上源码        private void buttonOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog opendlg = new OpenFileDialog();
            opendlg.Filter = "支持的图像格式 (*.jpg,*.jpeg*.bmp)|*.jpg;*.jpeg;*.bmp|所有格式(*.*)|*.*";
            if (opendlg.ShowDialog() == DialogResult.OK)
            {
                Bitmap image = new Bitmap(opendlg.FileName);
                pictureBox1.Image = image;
             
                //RGB提取
                int i, j, rr, gg, bb;
                Bitmap bTemp = new Bitmap(pictureBox1.Image);
                Bitmap bBlue = bTemp;
                Bitmap bRed = bTemp;
                Bitmap bGreen = bTemp;
                Color cc = new Color();
                Color cBlue = new Color();
                Color cRed = new Color();
                Color cGreen = new Color();
                for( i = 0; i < bTemp.Width; i++ )
                {
                    for( j = 0; j < bTemp.Height; j++ )
                    {
                        cc = bTemp.GetPixel(i, j);
                        rr = cc.R;
                        gg = cc.G;
                        bb = cc.B;
                        cGreen = Color.FromArgb(0, gg, 0);
                        bGreen.SetPixel(i, j, cGreen);
                        cBlue = Color.FromArgb(0, 0, bb);
                        bBlue.SetPixel(i, j, cBlue);
                        cRed = Color.FromArgb(rr, 0, 0);                                      
                        bRed.SetPixel(i, j, cRed);//可能有问题的地方,因为这句的原因,下面的图片都是红色
                        
                    }
                }
                pictureBoxBlue.Image = bBlue;
                pictureBoxRed.Image = bRed;
                pictureBoxGreen.Image = bGreen;
            }
        }