Çoktan seçmeli sınamaları denetlemek için tasarlanmış bir program oluşturuyorum. Uygulamam, arka plan renginden (beyaz) farklı bir rengin piksellerini arayacak kareler anlamına geliyor. Stringbuilder Ben bireysel noktaların pozisyonunu sıralardım (kare köşeler).Aforge.NET - StringBuilder öğesinden öğe al
Soruma soru: Aşağıdaki kod bloğunda görebileceğiniz StringBuilder, ilk olarak, myPoint.Y değişkenine myPoint.X değişkenini (virgülle ayırarak) bir saniyeye ilk olarak nasıl atayabilirim? Stringbuilder'da noktaları noktalı virgülle ayırdım?
İkincisi: Bu noktalara sahip olmak, pikselleri arayacağım kareleri çizebiliyorum?
Yardımlarınız için teşekkürler.
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;
}
}
Tamam. Şimdi noktalardan oluşan bir dizi var. Soru şudur: Bitmap'i (karelerimin köşeleriyle sınırlı olarak) arka planımın renginden farklı renkte nasıl arayabilirim? Bu kareleri başka bir renkle işaretlemek mümkün mü? – k1dl3r