2012-02-19 77 views
0

我一直在寻找一段时间来弄清楚如何从图像中绘制出红色的每个像素上的精灵。 因此,如果我得到一个图像上有一些红色像素,游戏会在图像中的每个红色像素上绘制一些精灵。 这里有一个例子:XNA获取像素颜色并在每个像素上绘制精灵

http://i.stack.imgur.com/37MDP.png

而且,我很新的节目。

+0

你只是想用红色像素的图像来创建一个地图布局?这样做绝对有可能,但不是我推荐给编程新手的人。只是好奇它是你试图用像素来实现,然后尝试像素所在的纹理。 – 2012-02-19 16:48:48

+0

如乔治所说,如果它是一张地图,那么文本(如ASCII艺术)可能更容易。 – 2012-02-20 01:28:15

回答

0

将图像加载到Texture2D中。从这里你可以将精确的像素数据提取到一个数组中。

Color[] pixelColours = new Color[MyTexture.Width*MyTexture.Height]; 
MyTexture.GetData<Color>(pixelColours); 

现在这个数组可以循环,检查每个元素的红色通道值。如果它通过“红色测试”,那么你知道在哪里绘制精灵。这是循环的一些示例代码,以及如何将单个整数索引转换为x,y坐标。

for(int i=0;i<pixelColours.Length;i++) 
{ 
    if(pixelColours[i].R == 1) 
    { 
     Vector2 coords = new Vector2((int)i%MyTexture.Width, (int)Math.Floor(i/MyTexture.Width)); 
    } 
} 

因此,id sugest在加载图像时将所有这些操作都作为一次性关闭,将坐标保存到某处的列表中。然后当您将精灵画到屏幕上时,只需将这些坐标值乘以您正在绘制的图块的大小即可。

希望这有助于。