Bitmap.SetPixel(int x,int y,Color color)抛出ArgumentException:无效的参数

时间:2014-02-13 17:32:02

标签: c# xna

if (map[x, y] != null)
save.SetPixel(x, y, System.Drawing.Color.FromArgb(map[x, y].r, map[x, y].g, map[x, y].b));

此代码是x和y为整数的函数的一部分。 save是一个Bitmap。

save = CreateNonIndexedImage(Bitmap.FromFile("Content/save/map.png"));

map [,]是一个由Tile组成的数组,它是我的一类。 Tile.r,Tile.g和Tile.b都是整数。

为什么抛出ArgumentException?

StackTrace:

   bei System.Drawing.Image.get_Width()
   bei System.Drawing.Bitmap.SetPixel(Int32 x, Int32 y, Color color)
   bei RogueLike.Game1.saveTile(Int32 x, Int32 y) in C:\Users\Niklas\Documents\Visual Studio 2010\Projects\RogueLike\RogueLike\RogueLike\Game1.cs:Zeile 472.

2 个答案:

答案 0 :(得分:1)

根据MSDN,Bitmap.SetPixel不会抛出ArgumentException,但是Color.FromArgb会在

时抛出
  

红色,绿色或蓝色小于0或大于255。

因此,map[x, y].rmap[x, y].gmap[x, y].b中的一个位于整数区间[0..255]之外。

答案 1 :(得分:0)

我的猜测是您的图片小于您的数据,导致您的SetPixel函数调用超出范围异常。