Область растрового изображения уже заблокирована при доступе к GetPixel - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть Bitmap bm, который содержит различные флажки. Мне нужно l oop над каждым местоположением флажка XY и измерить количество черно-белых пикселей для каждого флажка, чтобы определить, было ли отмечено место флажка или нет. В этой строке цвет изменяется на true / false (черный / белый): lResult.Add(bm.GetPixel(y, x).GetBrightness() < 0.5f);, а результаты сохраняются в списке lResults.

Затем я добавляю количество истинных пикселей (пикселей, которые были отмечены ) и распечатать его на консоли, чтобы проверить, работает ли он. Хотя в настоящее время я получаю сообщение об ошибке:

enter image description here

            Bitmap bm = new Bitmap(@"C:\IronPDFDoc\1.png", true);
            BitmapData srcData = bm.LockBits(
             new Rectangle(0, 0, bm.Width, bm.Height),
             ImageLockMode.ReadOnly,
             PixelFormat.Format32bppArgb);


            SecondarySchoolCheckboxes b1 = new SecondarySchoolCheckboxes();

            foreach (KeyValuePair<string, CheckboxData> element in b1.CheckboxLocations)
            {

                int startX = element.Value.startX;
                int endX = element.Value.endX;
                int startY = element.Value.startY;
                int endY = element.Value.endY;

                List<bool> lResult = new List<bool>();



                    for (int y = startY; y < endY; y++)
                    {
                        for (int x = startX; x < endX; x++)
                        {
                            lResult.Add(bm.GetPixel(y, x).GetBrightness() < 0.5f);
                        }
                    }


                int numMarked = 0;
                foreach(bool b in lResult)
                {
                    if(b == true)
                    {
                        numMarked++;
                    }
                }

                Console.WriteLine($"Box Name: {element.Key}\nNum Squares Marked: {numMarked}\n");


            }

Кто-нибудь может понять, почему я получаю ошибку? Я просматривал различные другие подобные сообщения Stackoverflow для этой ошибки, хотя ни одна не решает мою конкретную c проблему

...