首页 > 解决方案 > SystemArgumentOutOfRangeException C#

问题描述

namespace Cropping_Image
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var img = new Bitmap(Image.FromFile(@"C:\Users\Overnighter\Desktop\test.png"));
            int num = 1;
            int x1 = 0;
            var x2 = 120;
            int y1 = 0;
            var y2 = 120;

            while (x2 != img.Width)
            {
                var width = x2 - x1+1;
                var height = y2 - y1+1;

                var result = new Bitmap(width, height);

                for (var i = x1; i <= x2; i++)
                    for (var j = y1; j <= y2; j++)
                        result.SetPixel(i - x1, j - y2, img.GetPixel(i, j));

                result.Save(@"C:\Users\Overnighter\Desktop\file\"+ num +".png");
                    num++;
                    x1 += 120;
                    x2 += 120;
            }
        }
    }
}

错误说明:System.ArgumentOutOfRangeException:“参数必须为正且小于高度。 参数名称:y” 如何解决此错误?

标签: c#visual-studioexception

解决方案


在那段代码中:

result.SetPixel(**i - x1**, **j - y2**, img.GetPixel(i, j));

您需要确保i - x1(x 参数)和j - y2(y 参数)是正数,我认为这样的事情应该足以消除异常:

    for (var i = x1; i <= x2; i++)
                        for (var j = y1; j <= y2; j++)
                            if((i - x1)>=0 && (j - y2)>=0)
                                 result.SetPixel(i - x1, j - y2, img.GetPixel(i, j));

但是,如果您收到该消息,则您可能有问题


推荐阅读