Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SystemArgumentOutOfRange异常C_C#_Visual Studio_Exception - Fatal编程技术网

C# SystemArgumentOutOfRange异常C

C# SystemArgumentOutOfRange异常C,c#,visual-studio,exception,C#,Visual Studio,Exception,错误说明: System.ArgumentOutOfRangeException:参数必须为正且小于高度。 参数名称:y 如何修复此错误?在这段代码中: namespace Cropping_Image { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void bu

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

在这段代码中:

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;
            }
        }
    }
}
你需要确保i-x1 x参数和j-y2 y参数为正, 我认为这样做应该足以消除例外:

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

但是如果你得到了这个信息,你可能是弄错了,根据这个错误,你把y设为正,小于高度。哪一部分被卡住了?通过确保j-y2永远不会被否定,使用调试器并在运行时调试代码。查看异常发生时变量值是什么,以及这些值是如何获得的。开发的一部分是学习如何通过遍历来调试自己的代码。j-y2将是负面的。你是说y2-j吗?@TimOvernighter SetPixel方法接受一个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));