2

重複の可能性:
ビットマップをC#でブール配列に変換する高速な方法?

私のプロジェクトには、4x4の白黒スプライトを保持するために使用している白黒ビットマップのリソースがあります。このデータを効果的に使用する前に、2D多次元(またはギザギザ、関係ありません)ブール配列に変換する必要があります。falseは白を表し、黒はtrueを表します。

これが私の現在の解決策です:

    public Bitmap PiecesBitmap = Project.Properties.Resources.pieces;
    bool[,] PiecesBoolArray = new bool[4, 16]; // 4 wide, 16 high (4 4x4 images)

    for (int x = 0; x < 4; x++)
            {
                for (int y = 0; y < 16; y++)
                {
                    if (PiecesBitmap.GetPixel(x, y) == Color.Black)
                    {
                        PiecesBoolArray[x, y] = true;
                    }
                    else
                    {
                        PiecesBoolArray[x, y] = false;
                    }

                }
            }

この関数を(異なるビットマップで)頻繁に呼び出すので、これを行うためのより効率的な方法はありますか?.GetPixelはちょっと遅いです、そしてそれは私がここでいくつかのトリックを逃しているように感じます。提案ありがとうございます。

4

1 に答える 1

2

Bitmap.LockBitsを使用します。Web上にチュートリアルがあります。

于 2012-06-12T15:20:18.667 に答える