C# 异常未处理。矩形对此资源太大或太小

C# 异常未处理。矩形对此资源太大或太小,c#,xna,C#,Xna,我正在尝试为一个简单的XNA赛车游戏创建一个碰撞检测方法,我正在使用它来提取纹理数据。我试图做的是检查纹理区域中是否有任何颜色是蓝色(这是我赛道上墙壁的颜色)。然而,我一直在标题中发现错误。有人能解释一下为什么会发生这种情况吗 代码: public bool Collision() { int width=arrow.width;//arrow是我的“car”纹理的名称(它是一个箭头) int高度=箭头高度; int xr=(int)x;//x是我的箭头的x位置 int yr=(int)y;//

我正在尝试为一个简单的XNA赛车游戏创建一个碰撞检测方法,我正在使用它来提取纹理数据。我试图做的是检查纹理区域中是否有任何颜色是蓝色(这是我赛道上墙壁的颜色)。然而,我一直在标题中发现错误。有人能解释一下为什么会发生这种情况吗

代码:

public bool Collision()
{
int width=arrow.width;//arrow是我的“car”纹理的名称(它是一个箭头)
int高度=箭头高度;
int xr=(int)x;//x是我的箭头的x位置
int yr=(int)y;//y是我的箭头的y位置
颜色[]原始数据=新颜色[宽度*高度];
矩形提取区域=新矩形(xr、yr、宽度、高度);
track.GetData(0,extractRegion,rawData,0,width*height);//此处发生错误
颜色[,]rawDataAsGrid=新颜色[高度、宽度];
对于(int row=0;row

编辑:我让它工作了

您的rawData的长度不足,无法接收您尝试使用GetData()方法获取的数据

更改此行:

Color[] rawData = new Color[width * height];
进入:


这应该可以做到。希望有帮助

您可以将此方法添加到代码示例:track.GetData(params…)中吗?您是如何使其工作的?你不需要进一步的帮助吗?我们现在可以删除这个问题吗?
Color[] rawData = new Color[width * height];
Color[] rawData = new Color[track.Width * track.Height];