public void Stolb(int i, int N2x, BitmapData data2, int Ny, int NyP, ColorModeEnum colorMode) { int N2 = 0; if (Ny > NyP) { N2 = (Ny - NyP) / 2; for (int j = 0; j < N2; j++) { array[i, j] = 0.0; } for (int j = N2; j < Ny - N2; j++) { Color c1 = ImageProcessor.getPixel(i - N2x, j - N2, data2); array[i, j] = GetColorValue(c1, colorMode); } for (int j = Ny - N2; j < Ny; j++) { array[i, j] = 0.0; } } else { for (int j = 0; j < Ny; j++) { Color c1 = ImageProcessor.getPixel(i - N2x, j, data2); array[i, j] = c1.R; } } }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// unsafe private static void drawPixelSquareStep(int x, int y, Color fillColor, List <Point> listOfPoints, BitmapData imageData, Image someImage, Color borderColor) { Color pixelcolor; if (x + 1 < someImage.Size.Width) { pixelcolor = ImageProcessor.getPixel(x + 1, y, imageData); if ((pixelcolor.ToArgb() != borderColor.ToArgb()) && (pixelcolor.ToArgb() != fillColor.ToArgb())) { listOfPoints.Add(new Point(x + 1, y)); ImageProcessor.setPixel(imageData, x + 1, y, fillColor); } } if (y + 1 < someImage.Size.Height) { pixelcolor = ImageProcessor.getPixel(x, y + 1, imageData); if ((pixelcolor.ToArgb() != borderColor.ToArgb()) && (pixelcolor.ToArgb() != fillColor.ToArgb())) { listOfPoints.Add(new Point(x, y + 1)); ImageProcessor.setPixel(imageData, x, y + 1, fillColor); } } if (x - 1 >= 0) { pixelcolor = ImageProcessor.getPixel(x - 1, y, imageData); if ((pixelcolor.ToArgb() != borderColor.ToArgb()) && (pixelcolor.ToArgb() != fillColor.ToArgb())) { listOfPoints.Add(new Point(x - 1, y)); ImageProcessor.setPixel(imageData, x - 1, y, fillColor); } } if (y - 1 >= 0) { pixelcolor = ImageProcessor.getPixel(x, y - 1, imageData); if ((pixelcolor.ToArgb() != borderColor.ToArgb()) && (pixelcolor.ToArgb() != fillColor.ToArgb())) { listOfPoints.Add(new Point(x, y - 1)); ImageProcessor.setPixel(imageData, x, y - 1, fillColor); } } }
private static void Fill_Circle_Outside(ZArrayDescriptor zArrayDescriptor, BitmapData data2, int width, int height, Color c2) // Заполнение цветом { Color c; Color red = c2; Color green = Color.FromArgb(0, 0, 0); for (int j = 0; j < width; j++) { for (int i = 0; i < height; i++) { c = ImageProcessor.getPixel(j, i, data2); //if (c != red) ImageProcessor.setPixel(data2, j, i, green); else break; if (c != red) { zArrayDescriptor.array[j, i] = 0; } else { break; } } } for (int j = 0; j < width; j++) { for (int i = height - 1; i >= 0; i--) { c = ImageProcessor.getPixel(j, i, data2); if (c == green) { continue; } // if (c != red ) ImageProcessor.setPixel(data2, j, i, green); else break; if (c != red) { zArrayDescriptor.array[j, i] = 0; } else { break; } } } }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> /// Приведение изображения к диапазону без ZArrayDescriptor (перегруженный метод) /// </summary> public static void Range_Picture(PictureBox pictureBox01, double min, double max) { // c1 = ImageProcessor.getPixel(i, j, data1); // c1 = bmp1.GetPixel(i, j); // ImageProcessor.setPixel(data5, i, j, Color.FromArgb(r, r, r)); // bmp2.SetPixel(j, i, c1); // bmp5.UnlockBits(data5); if (pictureBox01 == null) { MessageBox.Show("SumClass pictureBox01 == null"); return; } int width = pictureBox01.Image.Width; int height = pictureBox01.Image.Height; Bitmap bmp2 = new Bitmap(width, height); BitmapData data2 = ImageProcessor.getBitmapData(bmp2); Bitmap bmp1 = new Bitmap(pictureBox01.Image, width, height); BitmapData data1 = ImageProcessor.getBitmapData(bmp1); if (max == min) { for (int j = 0; j < width; j++) { for (int i = 0; i < height; i++) { int c = 0; if (max < 255 && max > 0.0) { c = Convert.ToInt32(max); } if (max > 255) { c = 255; } if (max < 0) { c = 0; } Color c1 = Color.FromArgb(c, c, c); ImageProcessor.setPixel(data2, j, i, c1); } } } if (max != min) { double mxmn = 255.0 / (max - min); for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { //double fc = zArrayPicture.array[j, i]; Color c2 = ImageProcessor.getPixel(i, j, data1); double fc = c2.G; if (fc > max) { fc = max; } if (fc < min) { fc = min; } int c = Convert.ToInt32((fc - min) * mxmn); Color c1 = Color.FromArgb(c, c, c); ImageProcessor.setPixel(data2, i, j, c1); } } } pictureBox01.Image = bmp2; bmp2.UnlockBits(data2); }