private void btnScan_Click(object sender, EventArgs e) { // reset image pbScreen.Image = sourceImage; var masks = new ArrayList(); for (var i = 0; i < tcMasks.TabPages.Count; ++i) { PictureBox pb = (PictureBox)tcMasks.TabPages[i].Controls[0]; var mask = new MaskItem(); mask.Image = bitmapConvertor.RoundImage(new Bitmap(pb.Image)); mask.CalculateColors(); mask.Name = i.ToString(); masks.Add(mask); } var detected = new ArrayList(); detectionService.Detect( bitmapConvertor.ImageToMatrix(new Bitmap(pbScreen.Image)), masks, detected ); using (Graphics gr = Graphics.FromImage(pbScreen.Image)) { Pen borderPen = new Pen(Color.Red, 1); foreach (DetectedItem item in detected) { gr.DrawImage( item.Mask.Image, new Point(item.X, item.Y) ); gr.DrawRectangle(borderPen, item.Rect); } } }