示例#1
0
        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);
        }
示例#2
0
        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);
        }