Aforge.NET — получение элементов из StringBuilder

Я создаю программу, предназначенную для проверки тестов с множественным выбором. Мое приложение предназначено для квадратов, которые будут искать пиксели другого цвета, чем цвет фона (белый). Stringbuilder Я использовал для выравнивания положения отдельных точек (квадратных углов).

Мой вопрос: как StringBuilder, который вы можете видеть в блоке кода ниже, сначала присваивает значение переменной myPoint.X, а затем (разделяя запятыми) переменной myPoint.Y? В stringbuilder я разделяю точки точкой с запятой?

Во-вторых: Могу ли я, имея эти точки, рисовать квадраты, между которыми я буду искать пиксели?

Спасибо за помощь.

public void ImageProcessing(PictureBox pbox, Bitmap bitmap, TextBox tb1)
        {
            //var nbitmap = UnmanagedImage.FromManagedImage(bitmap);
            bitmap = (Bitmap)pbox.Image.Clone();
            BitmapData bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width,
                bitmap.Height),
                ImageLockMode.ReadWrite, bitmap.PixelFormat);
            ColorFiltering colorFiltering = new ColorFiltering();

            colorFiltering.Red = new IntRange(0, 64);
            colorFiltering.Green = new IntRange(0, 64);
            colorFiltering.Blue = new IntRange(0, 64);
            colorFiltering.FillOutsideRange = false;
            colorFiltering.ApplyInPlace(bitmapData);

            IntPoint myPoint = new IntPoint();

            BlobCounter blobCounter = new BlobCounter();
            blobCounter.FilterBlobs = true;
            blobCounter.MinHeight = 15;
            blobCounter.MinWidth = 15;

            blobCounter.ProcessImage(bitmapData);
            Blob[] blobs = blobCounter.GetObjectsInformation();
            bitmap.UnlockBits(bitmapData);

            SimpleShapeChecker shapeChecker = new SimpleShapeChecker();


            Graphics g = Graphics.FromImage(bitmap);
            Pen redPen = new Pen(Color.Red, 3);
            Pen bluePen = new Pen(Color.Blue, 3);
            List<IntPoint> corners = new List<IntPoint>();


            StringBuilder sb = new StringBuilder();
            string stg = "";


            List<IntPoint> zbior = new List<IntPoint>();

            for (int i = 0, n = blobs.Length; i < n; i++)
            {
                List<IntPoint> edgePoints =     blobCounter.GetBlobsEdgePoints(blobs[i]);

                if (shapeChecker.IsQuadrilateral(edgePoints, out corners))
                {

                    PolygonSubType subType = shapeChecker.CheckPolygonSubType(corners);

                    Pen pen = null;

                    if (subType == PolygonSubType.Square)
                    {

                        pen = (corners.Count == 4) ? redPen : bluePen;
                        foreach (var item in corners)
                        {
                            sb.Append(item).Append(";");

                        }

                    }


                    g.DrawPolygon(pen, ToPointsArray(corners));
                }

            }
tb1.Text = stg;

                redPen.Dispose();
                bluePen.Dispose();
                g.Dispose();
                Clipboard.SetDataObject(bitmap);
                pbox.Image = bitmap;
            }

        }

person k1dl3r    schedule 06.04.2016    source источник
comment
ХОРОШО. Теперь у меня есть массив точек. Вопрос в том, как я могу искать растровое изображение (ограниченное точками углов моих квадратов) для другого цвета, чем цвет моего фона? Можно ли отметить эти квадраты, где есть другой цвет?   -  person k1dl3r    schedule 11.04.2016


Ответы (1)


Вы возвращаете строку из StringBuilder, вызывая для нее метод ToString(), который возвращает всю строку.

Я не уверен, что хочу, чтобы ваш второй вопрос был, не могли бы вы уточнить?

person Malte R    schedule 06.04.2016