public static void Effect(Bitmap source, ImagePixelEffects effect, int level) { int imageWidth = source.Width; int imageHeight = source.Height; Rectangle rect = new Rectangle(0, 0, imageWidth, imageHeight); System.Drawing.Imaging.BitmapData bmpData = source.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, source.PixelFormat); IntPtr ptr = bmpData.Scan0; int count = imageWidth * imageHeight * 4; byte[] pixelValues = new byte[count]; System.Runtime.InteropServices.Marshal.Copy(ptr, pixelValues, 0, count); switch (effect) { case ImagePixelEffects.Lightness: Lightness(pixelValues, imageWidth, imageHeight, level); break; case ImagePixelEffects.Darkness: Darkness(pixelValues, imageWidth, imageHeight, level); break; case ImagePixelEffects.Gray: Gray(pixelValues, imageWidth, imageHeight, level); break; case ImagePixelEffects.Redden: Redden(pixelValues, imageWidth, imageHeight, level); break; case ImagePixelEffects.Bluen: Bluen(pixelValues, imageWidth, imageHeight, level); break; case ImagePixelEffects.Greenen: Greenen(pixelValues, imageWidth, imageHeight, level); break; case ImagePixelEffects.Invisible: Invisible(pixelValues, imageWidth, imageHeight, level); break; case ImagePixelEffects.Reverse: Reverse(pixelValues, imageWidth, imageHeight, level); break; case ImagePixelEffects.RandomSwitch: RandomSwitch(pixelValues, imageWidth, imageHeight, level); break; case ImagePixelEffects.RandomRowMove: RandomRowMove(pixelValues, imageWidth, imageHeight, level); break; case ImagePixelEffects.RandomColumnMove: RandomColumnMove(pixelValues, imageWidth, imageHeight, level); break; case ImagePixelEffects.RandomPoint: RandomPoint(pixelValues, imageWidth, imageHeight, level); break; case ImagePixelEffects.Statue: Statue(pixelValues, imageWidth, imageHeight, level); break; } System.Runtime.InteropServices.Marshal.Copy(pixelValues, 0, ptr, count); source.UnlockBits(bmpData); }