我想检查所选矩形是否透明:
spriteBatch.Draw(texture, new Vector2(0, 0),
new Rectangle(0, 0, 16, 16), Color.White);
有可能吗?
答案 0 :(得分:2)
是的,有可能。您必须检查区域中的所有像素是否透明。请注意,这是一个相当慢的操作。
这是一个应该做你想要的方法:
bool IsRegionTransparent(Texture2D texture, Rectangle r)
{
int size = r.Width * r.Height;
Color[] buffer = new Color[size];
texture.GetData(0, r, buffer, 0, size);
return buffer.All(c => c == Color.Transparent);
}
请注意,我没有编译,测试或优化上述内容。此外,它专为预乘纹理设计(XNA 4.0中的默认设置)。