首页 > 代码库 > [C#绘图]Bitmap锁定到系统内存中

[C#绘图]Bitmap锁定到系统内存中

具体方法Bitmap.LockBits方法的实现功能是讲Bitmap锁定到系统内存中。

使用LockBits方法,可以在系统内存中锁定现有的位图,以便通过编程方式进行修改。尽管用LockBits方式进行大规模更改可以获得更好的性能,但是仍然可以用SetPixel方法来更改图像的颜色。

函数的返回值的类型是BitmapData,包含选定Bitmap区域的特性。

private void LockUnlockBitsExample(PaintEventArgs e){    // 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  = Math.Abs(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.      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);}

 

[C#绘图]Bitmap锁定到系统内存中