我开始玩一个小游戏并从http://reinerstileset.4players.de下载了一些很棒的2d精灵。然而,他的背景(未知)是我想要删除的棕色。
有没有办法可以检查(1,1)处的像素并将该像素设置为删除的颜色键,这样我就不会得到对象的背景颜色?
答案 0 :(得分:5)
纹理处理器有一个属性,用于指定背景透明度的颜色。
在解决方案资源管理器中选择您的精灵(它应该在您的内容项目中),然后查找属性检查器。你应该看到'内容处理器:纹理 - XNA框架'。展开该部分,根据需要更改颜色键颜色。默认值为洋红色/亮粉红色(0xFF00FF)。
答案 1 :(得分:1)
您可以创建一个能够为您执行此操作的内容处理器。简单纹理处理器的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)上的处理器选项中为纹理选择它。 / p>
当然,如果你所有的精灵都有相同的背景颜色,那么jv42的答案会更容易。