C#指数超出范围。必须为非负且小于集合参数名称的大小:index

时间:2016-07-31 21:19:05

标签: c#

我正在创建一个程序来保存图像每个像素的RGB颜色,但它会出现以下错误:

  

如果您正在使用集合,请确保将索引更少   而不是集合的大小。

我不知道程序中的错误在哪里。

这是我的代码:

(忽略部分:"if (altura >= largura)")。错误发生在"if (altura < largura)"部分。 )

private void button2_Click(object sender, EventArgs e)
    {
         OpenFileDialog abrir = new OpenFileDialog
        {
            Title = @"Abrir Imagem", // Titulo da janela

            FileName = @"Nome Arquivo JPG", // Texto que aparece no campo nome da janela

            Filter = @"Arquivo JPEG (*.jpg)|*.jpg"
        };

        DialogResult Resultado = abrir.ShowDialog();

        if (Resultado == DialogResult.OK)
        {
            Bitmap bmp = new Bitmap(abrir.FileName);

            picFoto.Load(abrir.FileName);

            picFoto.SizeMode = PictureBoxSizeMode.AutoSize;

            int largura = this.picFoto.Width;
            int altura = this.picFoto.Height;

            picFoto.SizeMode = PictureBoxSizeMode.StretchImage;

           // MessageBox.Show("Altura " + largura + " Largura " + altura); // ate aqui funfa

            if (altura < largura)
            {
                int largura2 = 1; int altura2 = 1;
                while (largura2 < largura)
                {
                    //largura2++;

                    while (altura2 < altura )
                    {
                        altura2++;
                        //MessageBox.Show(" " + largura2 + "" + altura2);
                        Lista.Items.Add(" " + largura2 + "" + altura2);
                        int a = bmp.GetPixel(largura2, altura2).A;
                        int r = bmp.GetPixel(largura2, altura2).R;
                        int g = bmp.GetPixel(largura2, altura2).G;
                        int b = bmp.GetPixel(largura2, altura2).B;

                        lblCor.BackColor = Color.FromArgb(a, r, g, b);

                        lblNomeCor.Text = " Cor: A: " + a + " R: " + r + " G: " + g + " B: " + b;
                        label1.Text = "Largura: \n" + largura + " \nAltura: \n" + altura +"\nX: " + largura2 + " Y: " + altura2;
                        //Lista.Items.Add(lblNomeCor.Text);
                    }
                    altura2 = 1;
                }
            }
            if (altura >= largura)
            {
                int largura2 = 1; int altura2 = 1;
                while (altura2 <= altura - 1)
                {
                    altura2++;

                    while (largura2 <= largura - 1)
                    {
                        largura2++;
                        int a = bmp.GetPixel(largura2, altura2).A;
                        int r = bmp.GetPixel(largura2, altura2).R;
                        int g = bmp.GetPixel(largura2, altura2).G;
                        int b = bmp.GetPixel(largura2, altura2).B;

                        lblCor.BackColor = Color.FromArgb(a, r, g, b);

                        lblNomeCor.Text = " Cor: A: " + a + " R: " + r + " G: " + g + " B: " + b;
                        label1.Text = "Largura: \n" + largura + " \nAltura: \n" + altura + "\nX: " + largura2 + " Y: " + altura2;
                        //Lista.Items.Add(lblNomeCor.Text);
                    }
                }
            }
        }
    }

0 个答案:

没有答案