我已经开始了一个小游戏,并从http://reinerstileset.4players.de下载了一些伟大的2D精灵。但是,他的背景(未知)是我想要移除的棕色。我如何在xna中使用c#键入关键字?
有没有一种方法可以检查(1,1)处的像素,并将该像素设置为要移除的颜色键,以便我不会获取对象的背景颜色?
我已经开始了一个小游戏,并从http://reinerstileset.4players.de下载了一些伟大的2D精灵。但是,他的背景(未知)是我想要移除的棕色。我如何在xna中使用c#键入关键字?
有没有一种方法可以检查(1,1)处的像素,并将该像素设置为要移除的颜色键,以便我不会获取对象的背景颜色?
纹理处理器有一个属性,用于指定背景透明度的颜色。
在解决方案资源管理器中选择您的精灵(它应该在您的内容项目中),然后查找属性检查器。你应该看到'内容处理器:纹理 - XNA框架'。展开该部分,根据需要更改“颜色关键颜色”。默认值是品红色/亮粉色(0xFF00FF)。
您可以创建一个内容处理器,为您做到这一点。一个简单的纹理处理器的Here is an example。这是预乘alpha(XNA 4.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完全同意。如果需要“动态”,则创建一个内容处理器。如果颜色已知,则使用默认值。 – jv42 2011-03-31 13:44:13