将黑白位图转换为布尔数组

时间:2012-06-12 15:16:52

标签: c# arrays bitmap boolean imaging

  

可能重复:
  Fast way to convert a Bitmap into a Boolean array in C#?

在我的项目中,我有一个黑白位图资源,我用它来保存一些4x4黑白精灵。在我可以有效地使用这些数据之前,我需要将其转换为2D多维(或锯齿状,无关紧要)布尔数组,其中false表示白色和黑色表示真。

这是我目前的解决方案:

    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有点慢,只是觉得我错过了一些技巧。感谢您的任何建议。

1 个答案:

答案 0 :(得分:2)

使用Bitmap.LockBits。你会在网上找到教程。