ImageLockMode Enumeration
Specifies flags that are passed to the flags parameter of the LockBits method. The LockBits method locks a portion of an image so that you can read or write the pixel data.
Assembly: System.Drawing (in System.Drawing.dll)
| Member name | Description | |
|---|---|---|
| ReadOnly | Specifies that a portion of the image is locked for reading. | |
| ReadWrite | Specifies that a portion of the image is locked for reading or writing. | |
| UserInputBuffer | Specifies that the buffer used for reading or writing pixel data is allocated by the user. If this flag is set, the flags parameter of the LockBits method serves as an input parameter (and possibly as an output parameter). If this flag is cleared, then the flags parameter serves only as an output parameter. | |
| WriteOnly | Specifies that a portion of the image is locked for writing. |
The following code example demonstrates how to use the PixelFormat, Height, Width, and Scan0 properties; the LockBits and UnlockBits methods; and the ImageLockMode enumeration. This example is designed to be used with Windows Forms. To run this example, paste it into a form and handle the form's Paint event by calling the LockUnlockBitsExample method, passing e as PaintEventArgs.
void LockUnlockBitsExample( PaintEventArgs^ e ) { // Create a new bitmap. Bitmap^ bmp = gcnew Bitmap( "c:\\fakePhoto.jpg" ); // Lock the bitmap's bits. Rectangle rect = 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. // This code is specific to a bitmap with 24 bits per pixels. int bytes = Math::Abs(bmpData->Stride) * bmp->Height; array<Byte>^rgbValues = gcnew array<Byte>(bytes); // Copy the RGB values into the array. System::Runtime::InteropServices::Marshal::Copy( ptr, rgbValues, 0, bytes ); // Set every third value to 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 ); }
Available since 1.1