2

選択した長方形が透明かどうかを確認したい:

spriteBatch.Draw(texture, new Vector2(0, 0), 
           new Rectangle(0, 0, 16, 16), Color.White);

出来ますか?

4

1 に答える 1

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 のデフォルト) 用に設計されています。

于 2011-12-04T05:02:55.423 に答える