C# SystemArgumentOutOfRange异常C
错误说明: System.ArgumentOutOfRangeException:参数必须为正且小于高度。 参数名称:y 如何修复此错误?在这段代码中: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
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));