[英]C# ColorMatrix Index out of Bounds
我正在尝试从MSDN文章中运行一些稍微修改过的代码作为学校项目的一部分。 目标是使用colormatrix重新着色图片框中的位图。 这是我的代码:
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文章在这里: https ://msdn.microsoft.com/en-us/library/6tf7sa87%28v=vs.110%29 。 ASPX
当它到达最后一行时,“ColorMatrix colorMatrix = new ...”我的代码遇到运行时错误。 在调试器中,我将colorMatrixElements作为float [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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.