我正在尝试创建一个 C# 函数,该函数返回屏幕截图位图中每四个像素的 R、G 和 B 值。这是我的代码的一部分。
for (int ix = 4; ix < 1366; ix = ix + 4)
{
x = x + 4;
for (int iy = 3; iy < 768; iy = iy + 4)
{
y = y + 4;
System.Drawing.Color pixelcolor = screenshot.GetPixel(x,y);
red = kolorpiksela.R;
green = kolorpiksela.G;
blue = kolorpiksela.B;
sumR = sumR + red;
sumG = sumG + green;
sumB = sumB + blue;
}
}
Where screenshot
是位图。最后,“总和”值除以像素数。我的问题是它不起作用。我得到的错误是:
System.Drawing.dll 中发生“System.ArgumentOutOfRangeException”类型的未处理异常
附加信息:参数必须为正且
我认为错误的原因是pixelcolor
应该重置每一步,但我在过去两天尝试这样做。没有成功。
我只是不知道这里发生了什么:
for (int ix = 4; ix < 1366; ix = ix +4 )
{
x = x + 4;
for (int iy = 3; iy < 768; iy = iy + 4)
{
y = y + 4;
我的猜测是它应该看起来像:
for (int x = 0; x < screenshot.Width; x += 4 )
{
for (int y = 0; y < screenshot.Height; y += 4)
{
System.Drawing.Color pixelcolor = screenshot.GetPixel(x,y);
不必要时尽量不要硬输入值。我什至可能会将“4”变成 const 或某个地方的属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)