public override Bitmap processImage(Bitmap sourceImage, BackgroundWorker worker) { Filters dilate = new Dilation(Elem); Filters erode = new Erosion(Elem); Bitmap resD = new Bitmap(sourceImage.Width, sourceImage.Height); Bitmap resE = new Bitmap(sourceImage.Width, sourceImage.Height); Bitmap res = new Bitmap(sourceImage.Width, sourceImage.Height); resD = dilate.processImage(sourceImage, worker); resE = erode.processImage(sourceImage, worker); for (int i = 0; i < sourceImage.Width; i++) { worker.ReportProgress((int)((float)i / res.Width * 100)); if (worker.CancellationPending) { return(null); } for (int j = 0; j < sourceImage.Height; j++) { res.SetPixel(i, j, Color.FromArgb(Clamp(resD.GetPixel(i, j).R - resE.GetPixel(i, j).R, 0, 255), Clamp(resD.GetPixel(i, j).G - resE.GetPixel(i, j).G, 0, 255), Clamp(resD.GetPixel(i, j).B - resE.GetPixel(i, j).B, 0, 255))); } } return(res); }
private void dilationToolStripMenuItem_Click(object sender, EventArgs e) { Filters filter = new Dilation(strElem); backgroundWorker1.RunWorkerAsync(filter); }