ImageLockMode ImageLockMode ImageLockMode ImageLockMode Enum

Definition

Gibt Flags an, die an den Flagsparameter der LockBits-Methode übergeben werden. Die LockBits-Methode sperrt einen Bereich eines Bildes, sodass Pixeldaten gelesen oder geschrieben werden können.The LockBits method locks a portion of an image so that you can read or write the pixel data.

public enum class ImageLockMode
public enum ImageLockMode
type ImageLockMode = 
Public Enum ImageLockMode
Vererbung
ImageLockModeImageLockModeImageLockModeImageLockMode

Felder

ReadOnly ReadOnly ReadOnly ReadOnly 1

Gibt an, dass ein Bereich des Bildes zum Lesen gesperrt ist.Specifies that a portion of the image is locked for reading.

ReadWrite ReadWrite ReadWrite ReadWrite 3

Gibt an, dass ein Bereich des Bildes zum Lesen oder Schreiben gesperrt ist.Specifies that a portion of the image is locked for reading or writing.

UserInputBuffer UserInputBuffer UserInputBuffer UserInputBuffer 4

Gibt an, dass der für das Lesen und Schreiben von Pixeldaten verwendete Puffer vom Benutzer reserviert ist.Specifies that the buffer used for reading or writing pixel data is allocated by the user. Wenn dieses Flag festgelegt ist, fungiert der flags-Parameter der LockBits-Methode als Eingabeparameter und möglicherweise als Ausgabeparameter.If this flag is set, the flags parameter of the LockBits method serves as an input parameter (and possibly as an output parameter). Wenn dieses Flag gelöscht wurde, fungiert der flags-Parameter ausschließlich als Ausgabeparameter.If this flag is cleared, then the flags parameter serves only as an output parameter.

WriteOnly WriteOnly WriteOnly WriteOnly 2

Gibt an, dass ein Bereich des Bildes zum Schreiben gesperrt ist.Specifies that a portion of the image is locked for writing.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie die PixelFormatEigenschaften Height, Width, und Scan0 , die LockBits -Methode UnlockBits und die-Methode ImageLockMode sowie die-Enumeration verwendet werden.The following code example demonstrates how to use the PixelFormat, Height, Width, and Scan0 properties; the LockBits and UnlockBits methods; and the ImageLockMode enumeration. Dieses Beispiel ist für die Verwendung mit Windows Forms konzipiert.This example is designed to be used with Windows Forms. Um dieses Beispiel auszuführen, fügen Sie es in ein Formular ein, und behandeln Paint Sie das-Ereignis des Formulars, e indem PaintEventArgsSie die LockUnlockBitsExample -Methode aufrufen und als übergeben.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 );
}
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);

    }

Private Sub LockUnlockBitsExample(ByVal e As PaintEventArgs)

    ' Create a new bitmap.
    Dim bmp As New Bitmap("c:\fakePhoto.jpg")

    ' Lock the bitmap's bits.  
    Dim rect As New Rectangle(0, 0, bmp.Width, bmp.Height)
    Dim bmpData As System.Drawing.Imaging.BitmapData = bmp.LockBits(rect, _
        Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat)

    ' Get the address of the first line.
    Dim ptr As IntPtr = bmpData.Scan0

    ' Declare an array to hold the bytes of the bitmap.
    ' This code is specific to a bitmap with 24 bits per pixels.
    Dim bytes As Integer = Math.Abs(bmpData.Stride) * bmp.Height
    Dim rgbValues(bytes - 1) As Byte

    ' Copy the RGB values into the array.
    System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes)

    ' Set every third value to 255. A 24bpp image will look red.
    For counter As Integer = 2 To rgbValues.Length - 1 Step 3
        rgbValues(counter) = 255
    Next

    ' 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)

End Sub

Gilt für: