public void Wykonaj(Zdjecie z, Stack <object> Argumenty) { if (z.Zaznaczenie.IsEmpty) { BitmapFilter.GrayScale(z.Duze); } else { if (z.Zaznaczenie.Width < 0) { z.Zaznaczenie.X += z.Zaznaczenie.Width; z.Zaznaczenie.Width *= -1; } if (z.Zaznaczenie.Height < 0) { z.Zaznaczenie.Y += z.Zaznaczenie.Height; z.Zaznaczenie.Height *= -1; } Bitmap grayed = new Bitmap(Math.Abs(z.Zaznaczenie.Width), Math.Abs(z.Zaznaczenie.Height), z.Duze.PixelFormat); Graphics g = Graphics.FromImage(grayed); g.DrawImage(z.Duze, new Rectangle(0, 0, grayed.Width, grayed.Height), z.Zaznaczenie, GraphicsUnit.Pixel); g.Dispose(); BitmapFilter.GrayScale(grayed); g = Graphics.FromImage(z.Duze); g.DrawImage(grayed, z.Zaznaczenie); g.Dispose(); } }
/// <summary> /// Metoda wykonujaca usrednianie Bitmap'y /// </summary> /// <param name="b">Bitmapa na ktorej ma zostac wykonana operacja</param> /// <param name="nWeight">Intensywnosc usrednienia</param> public static void MeanRemoval(Bitmap b, int nWeight /* default to 9*/) { ConvMatrix m = new ConvMatrix(); m.SetAll(-1); m.Pixel = nWeight; m.Factor = nWeight - 8; BitmapFilter.Conv3x3(b, m); }
/// <summary> /// Metoda wykonujaca wygladzanie Bitmap'y /// </summary> /// <param name="b">Bitmapa na ktorej ma zostac wykonana operacja</param> /// <param name="nWeight">Intensywnosc rozmycia</param> public static void Smooth(Bitmap b, int nWeight /* default to 1 */) { ConvMatrix m = new ConvMatrix(); m.SetAll(1); m.Pixel = nWeight; m.Factor = nWeight + 8; BitmapFilter.Conv3x3(b, m); }
/// <summary> /// Metoda wykonujaca wyostrzanie Bitmap'y /// </summary> /// <param name="b">Bitmapa na ktorej ma zostac wykonana operacja</param> /// <param name="nWeight">Intensywnosc wyostrzania</param> public static void Sharpen(Bitmap b, int nWeight /* default to 11*/) { ConvMatrix m = new ConvMatrix(); m.SetAll(0); m.Pixel = nWeight; m.TopMid = m.MidLeft = m.MidRight = m.BottomMid = -2; m.Factor = nWeight - 8; BitmapFilter.Conv3x3(b, m); }
/// <summary> /// Metoda wykonujaca rozmycie gaussa Bitmap'y /// </summary> /// <param name="b">Bitmapa na ktorej ma zostac wykonana operacja</param> /// <param name="nWeight">Intensywnosc rozmycia</param> public static void GaussianBlur(Bitmap b, int nWeight /* default to 4*/) { ConvMatrix m = new ConvMatrix(); m.SetAll(1); m.Pixel = nWeight; m.TopMid = m.MidLeft = m.MidRight = m.BottomMid = 2; m.Factor = nWeight + 12; BitmapFilter.Conv3x3(b, m); }
/// <summary> /// Metoda wykonujaca wykrywanie krawedzi w Bitmap'ie /// </summary> /// <param name="b">Bitmapa na ktorej ma zostac wykonana operacja</param> public static void EdgeDetectQuick(Bitmap b) { ConvMatrix m = new ConvMatrix(); m.TopLeft = m.TopMid = m.TopRight = -1; m.MidLeft = m.Pixel = m.MidRight = 0; m.BottomLeft = m.BottomMid = m.BottomRight = 1; m.Offset = 127; BitmapFilter.Conv3x3(b, m); }