如何从Texture2D XNA c#获取颜色和坐标(x,y)?

时间:2012-03-02 11:58:09

标签: c# xna xna-4.0

我要做的是检查完美像素切割,其中2个纹理具有黑色边缘,例如:这个纹理中的一个是圆形,第二个可以是三角形或矩形。

这是我的代码,它只给出了我需要的坐标颜色数组

Color[] playerColorArray = new Color[texturePlayer.Width * texturePlayer.Height];
Color[] secondColorArray = new Color[secondTexture.Width * sencondTexture.Height];
texturePlayer.GetData(playerColorArray);
secondTexture.GetData(secondTextureArray);

我的问题是如何从Texture2D获取每个像素的坐标,这个像素在这个Texture2D中是黑色的。

感谢提前:)

2 个答案:

答案 0 :(得分:4)

您已经拥有了一系列颜色,因此您只需要根据数组中的像素确定每个2D的坐标。

Riemers tutorial(我推荐)中的

,就是这样做的:

    Color[,] colors2D = new Color[texture.Width, texture.Height];
     for (int x = 0; x < texture.Width; x++)
     {
         for (int y = 0; y < texture.Height; y++)
         {
             colors2D[x, y] = colors1D[x + y * texture.Width]; 
         }
     }

答案 1 :(得分:1)

我个人更喜欢写扩展方法:

public static class Texture2dHelper
{
    public static Color GetPixel(this Color[] colors, int x, int y, int width)
    {
        return colors[x + (y * width)];
    }
    public static Color[] GetPixels(this Texture2D texture)
    {
        Color[] colors1D = new Color[texture.Width * texture.Height];
        texture.GetData<Color>(colors1D);
        return colors1D;
    }
}