public FilterWorker(Bitmap BMP1, int num_filtr1, PictureBox pictureBox21, ProgressBar progressBar21) { BMP = BMP1; num_filtr = num_filtr1; pictureBox2 = pictureBox21; progressBar1 = progressBar21; progressBar1.Value = 0; progressBar1.Minimum = 0; progressBar1.Maximum = BMP.Height - 2; pr = new ProgressThread(progressBar1); }
public static Bitmap bmp_create(Bitmap BMP, int num_filtr, ProgressBar progressBar1, ProgressThread pr) { BMPFilters flr = new BMPFilters(); byte[, ,] rs; rs = MatrixPixelReader.matrix(BMP); Bitmap BMP1 = new Bitmap(BMP.Width, BMP.Height); Color colorBMP1;//переменная, которая будет задавать цвет double red1 = 0, blue1 = 0, green1 = 0; byte red = 0, blue = 0, green = 0; flr.choose_filtr(num_filtr); if (flr.filtr.black) { for (int j = 0; j < BMP.Width; j++) BMP1.SetPixel(j, 0, Color.Black); } else { for (int j = 0; j < BMP.Width; j++) BMP1.SetPixel(j, 0, BMP.GetPixel(j, 0)); } for (int i = 1; i < BMP.Height - 1; i++) { progressBar1.Invoke(pr.MyDelegate); if (flr.filtr.black) BMP1.SetPixel(0, i, Color.Black); for (int j = 1; j < BMP.Width - 1; j++) { for (int p = 0; p < 3; p++) for (int p1 = 0; p1 < 3; p1++) { red1 += flr.filtr.fl[p, p1] * rs[0, i + p - 1, j + p1 - 1]; green1 += flr.filtr.fl[p, p1] * rs[1, i + p - 1, j + p1 - 1]; blue1 += flr.filtr.fl[p, p1] * rs[2, i + p - 1, j + p1 - 1]; } blue = (byte)(flr.filtr.bl ? (blue1 / flr.filtr.div) > 255 ? 255 : (blue1 / flr.filtr.div) < 0 ? 0 : (blue1 / flr.filtr.div) : blue1); red = (byte)(flr.filtr.bl ? (red1 / flr.filtr.div) > 255 ? 255 : (red1 / flr.filtr.div) < 0 ? 0 : (red1 / flr.filtr.div) : red1); green = (byte)(flr.filtr.bl ? (green1 / flr.filtr.div) > 255 ? 255 : (green1 / flr.filtr.div) < 0 ? 0 : (green1 / flr.filtr.div) : green1); colorBMP1 = Color.FromArgb((int)red, (int)green, (int)blue); BMP1.SetPixel(j, i, colorBMP1); red1 = blue1 = green1 = 0; } if (flr.filtr.black) BMP1.SetPixel(BMP.Width - 1, i, Color.Black); } if (flr.filtr.black) { for (int j = 0; j < BMP.Width; j++) BMP1.SetPixel(j, BMP.Height - 1, Color.Black); } else { for (int j = 0; j < BMP.Width; j++) BMP1.SetPixel(j, BMP.Height - 1, Color.White); } return BMP1; }
static public Bitmap bmp_create(Bitmap BMP, int num_filtr, ProgressBar progressBar1, ProgressThread pr) { BMPFilters flr = new BMPFilters(); byte[, ,] rs; rs = MatrixPixelReader.matrix(BMP); Bitmap BMP1 = new Bitmap(BMP.Width, BMP.Height); Color colorBMP1;//переменная, которая будет задавать цвет double red1 = 0, blue1 = 0, green1 = 0; byte red = 0, blue = 0, green = 0; flr.choose_filtr(num_filtr); if (flr.filtr.black) { for (int j = 0; j < BMP.Width; j++) { BMP1.SetPixel(j, 0, Color.Black); } } else { for (int j = 0; j < BMP.Width; j++) { BMP1.SetPixel(j, 0, BMP.GetPixel(j, 0)); } } for (int i = 1; i < BMP.Height - 1; i++) { progressBar1.Invoke(pr.MyDelegate); if (flr.filtr.black) { BMP1.SetPixel(0, i, Color.Black); } for (int j = 1; j < BMP.Width - 1; j++) { for (int p = 0; p < 3; p++) { for (int p1 = 0; p1 < 3; p1++) { red1 += flr.filtr.fl[p, p1] * rs[0, i + p - 1, j + p1 - 1]; green1 += flr.filtr.fl[p, p1] * rs[1, i + p - 1, j + p1 - 1]; blue1 += flr.filtr.fl[p, p1] * rs[2, i + p - 1, j + p1 - 1]; } } blue = (byte)(flr.filtr.bl ? (blue1 / flr.filtr.div) > 255 ? 255 : (blue1 / flr.filtr.div) < 0 ? 0 : (blue1 / flr.filtr.div) : blue1); red = (byte)(flr.filtr.bl ? (red1 / flr.filtr.div) > 255 ? 255 : (red1 / flr.filtr.div) < 0 ? 0 : (red1 / flr.filtr.div) : red1); green = (byte)(flr.filtr.bl ? (green1 / flr.filtr.div) > 255 ? 255 : (green1 / flr.filtr.div) < 0 ? 0 : (green1 / flr.filtr.div) : green1); colorBMP1 = Color.FromArgb((int)red, (int)green, (int)blue); BMP1.SetPixel(j, i, colorBMP1); red1 = blue1 = green1 = 0; } if (flr.filtr.black) { BMP1.SetPixel(BMP.Width - 1, i, Color.Black); } } if (flr.filtr.black) { for (int j = 0; j < BMP.Width; j++) { BMP1.SetPixel(j, BMP.Height - 1, Color.Black); } } else { for (int j = 0; j < BMP.Width; j++) { BMP1.SetPixel(j, BMP.Height - 1, Color.White); } } return(BMP1); }