C#ColorMatrix索引超出范围
作为学校项目的一部分,我正在尝试运行MSDN文章中的一些稍加修改的代码。目标是使用颜色矩阵在图片框中重新绘制位图。这是我的密码:C#ColorMatrix索引超出范围,c#,arrays,indexoutofboundsexception,C#,Arrays,Indexoutofboundsexception,作为学校项目的一部分,我正在尝试运行MSDN文章中的一些稍加修改的代码。目标是使用颜色矩阵在图片框中重新绘制位图。这是我的密码: float[][] colorMatrixElements = { new float[] {rScale, 0, 0, 0}, new float[] {0, gScale, 0, 0}, new float[] {0, 0, bScale, 0},
float[][] colorMatrixElements = {
new float[] {rScale, 0, 0, 0},
new float[] {0, gScale, 0, 0},
new float[] {0, 0, bScale, 0},
new float[] {0, 0, 0, 1}};
ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);
其中rScale、gScale和bScale是浮点数,其值从0.0f到1。MSDN的原始文章如下:
当它转到最后一行“ColorMatrix ColorMatrix=new…”时,我的代码遇到了运行时错误。在调试器中,我将ColorMatrixements作为浮点[4][]获取。好像它不是一个4x4阵列。我是在复制粘贴工作中弄糟了什么,还是我不明白C#如何处理2D数组
谢谢您的帮助。在您链接到的每个页面上,您都需要向该构造函数传递一个5乘5数组。您正在传递一个4乘4的数组,因此自然会得到一个
IndexOutOfBoundsException
试一试
结果很好。这将需要在我的项目的更大的方案中进行一些修改来完成我需要做的事情,但它现在可以编译了。谢谢你的回答!
float[][] colorMatrixElements = {
new float[] {rScale, 0, 0, 0, 0},
new float[] {0, gScale, 0, 0, 0},
new float[] {0, 0, bScale, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1}
};
ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);