如何为xna中的c键着色?

如何为xna中的c键着色?,xna,sprite,Xna,Sprite,我已经开始了一个小游戏,并从中下载了一些很棒的2d精灵。然而,他的背景是一个未知的棕色,我想删除 是否有一种方法可以检查1,1处的像素,并将该像素设置为要删除的颜色键,以便不获取对象的背景颜色?纹理处理器有一个属性,指定背景透明度的颜色 在解决方案资源管理器中选择您的精灵,它应该位于内容项目中,然后查找属性检查器。您应该看到“内容处理器:纹理-XNA框架”。展开该部分,根据需要更改颜色键颜色。默认值为洋红色/亮粉色0xFF00FF。纹理处理器有一个属性,指定背景透明度的颜色 在解决方案资源管理器

我已经开始了一个小游戏,并从中下载了一些很棒的2d精灵。然而,他的背景是一个未知的棕色,我想删除


是否有一种方法可以检查1,1处的像素,并将该像素设置为要删除的颜色键,以便不获取对象的背景颜色?

纹理处理器有一个属性,指定背景透明度的颜色


在解决方案资源管理器中选择您的精灵,它应该位于内容项目中,然后查找属性检查器。您应该看到“内容处理器:纹理-XNA框架”。展开该部分,根据需要更改颜色键颜色。默认值为洋红色/亮粉色0xFF00FF。

纹理处理器有一个属性,指定背景透明度的颜色


在解决方案资源管理器中选择您的精灵,它应该位于内容项目中,然后查找属性检查器。您应该看到“内容处理器:纹理-XNA框架”。展开该部分,根据需要更改颜色键颜色。默认值为洋红色/亮粉色0xFF00FF。

您可以创建一个内容处理器来为您执行此操作。一个简单的纹理处理器。这是针对预乘alpha的,XNA4.0已经做到了这一点,但它在3.1中很有用

您可以轻松地将其修改为读入第一个像素,并清除所有具有匹配值的像素。大概是这样的:

    Color m = bitmap.GetPixel(0, 0);
    for (int y = 0; y < bitmap.Height; y++)
    {
        for (int x = 0; x < bitmap.Width; x++)
        {
            if (m == bitmap.GetPixel(x, y))
                bitmap.SetPixel(x, y, Color.Transparent);
        }
    }
将其放入新的Windows库项目中,将其添加为内容项目的引用,构建一次,您应该能够从属性窗格F4上的处理器选项中为纹理选择它


当然,如果您的所有精灵都有相同的背景颜色,那么jv42的答案就更容易了。

您可以创建一个内容处理器来完成这项工作。一个简单的纹理处理器。这是针对预乘alpha的,XNA4.0已经做到了这一点,但它在3.1中很有用

您可以轻松地将其修改为读入第一个像素,并清除所有具有匹配值的像素。大概是这样的:

    Color m = bitmap.GetPixel(0, 0);
    for (int y = 0; y < bitmap.Height; y++)
    {
        for (int x = 0; x < bitmap.Width; x++)
        {
            if (m == bitmap.GetPixel(x, y))
                bitmap.SetPixel(x, y, Color.Transparent);
        }
    }
将其放入新的Windows库项目中,将其添加为内容项目的引用,构建一次,您应该能够从属性窗格F4上的处理器选项中为纹理选择它


当然,如果所有精灵的背景颜色都相同,jv42的答案就更简单。

+1完全同意这一点。如果需要“动态”,请创建内容处理器。如果颜色已知,则使用默认值。+1表示完全同意。如果需要“动态”,请创建内容处理器。如果颜色已知,请使用默认值。