Преобразование черно-белого растрового изображения в логический массив

Возможный дубликат:
Быстрый способ преобразования растрового изображения в логический массив в C#?

в моем проекте у меня есть ресурс, представляющий собой черно-белое растровое изображение, которое я использую для хранения черно-белых спрайтов 4x4. Прежде чем я смогу эффективно использовать эти данные, мне нужно преобразовать их в двумерный многомерный (или зубчатый, не имеет значения) логический массив, где 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 довольно медленный, и мне кажется, что я упустил какой-то трюк. Спасибо за любые предложения.


person Ryan    schedule 12.06.2012    source источник
comment
Проверьте ответ здесь stackoverflow.com/a/4235768/529282   -  person Martheen    schedule 12.06.2012
comment
Вы можете получить указатель на данные в стиле c. Взгляните на Bitmap.LockBits msdn.microsoft.com/en-us/library. /5ey6h79d.aspx   -  person mortb    schedule 12.06.2012
comment
спасибо, это как раз то, что я искал.   -  person Ryan    schedule 12.06.2012


Ответы (1)


Используйте Bitmap.LockBits. Вы найдете учебные пособия в Интернете.

person usr    schedule 12.06.2012
comment
Например, здесь: stackoverflow.com/a/1563170/284240 - person Tim Schmelter; 12.06.2012