// Create a new bitmap. Bitmap bmp = new Bitmap("c:\\fakePhoto.jpg");
// Lock the bitmap's bits. Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height); System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat);
// Get the address of the first line. IntPtr ptr = bmpData.Scan0;
// Declare an array to hold the bytes of the bitmap. int bytes = bmpData.Stride * bmp.Height; byte[] rgbValues = new byte[bytes];
// Copy the RGB values into the array. System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);
// Set every third value to 255. A 24bpp bitmap will look red. /*这里,为什么把每隔两个字节,把第三个字节赋值为255,图片看起来就偏红呢?*/ for (int counter = 2; counter < rgbValues.Length; counter += 3) rgbValues[counter] = 255;
// Copy the RGB values back to the bitmap System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes);
// Unlock the bits. bmp.UnlockBits(bmpData);
// Draw the modified image. e.Graphics.DrawImage(bmp, 0, 150);