BitmapData 类 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定位图图像的特性。 BitmapData 类由 LockBits 类的 UnlockBits(BitmapData) 和 Bitmap 方法使用。 不可继承。
public ref class BitmapData sealedpublic sealed class BitmapDatatype BitmapData = classPublic NotInheritable Class BitmapData- 继承
- 
				BitmapData
示例
下面的代码示例演示如何将 类与 和 UnlockBits 方法一BitmapData起使用LockBits。 此示例旨在与 Windows 窗体 一起使用。 若要运行此示例,请将其粘贴到窗体中,并通过调用 LockUnlockBitsExample 方法处理窗体的事件Paint,并将其e作为 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
构造函数
| BitmapData() | 初始化 BitmapData 类的新实例。 | 
属性
| Height | 获取或设置 Bitmap 对象的像素高度。 有时也称作扫描行数。 | 
| PixelFormat | 获取或设置返回此 Bitmap 对象的 BitmapData 对象中像素信息的格式。 | 
| Reserved | 保留。 请勿使用。 | 
| Scan0 | 获取或设置位图中第一个像素数据的地址。 它也可以看成是位图中的第一个扫描行。 | 
| Stride | 获取或设置 Bitmap 对象的跨距宽度(也称为扫描宽度)。 | 
| Width | 获取或设置 Bitmap 对象的像素宽度。 这也可以看作是一个扫描行中的像素数。 | 
方法
| Equals(Object) | 确定指定对象是否等于当前对象。(继承自 Object) | 
| GetHashCode() | 作为默认哈希函数。(继承自 Object) | 
| GetType() | 获取当前实例的 Type。(继承自 Object) | 
| MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) | 
| ToString() | 返回表示当前对象的字符串。(继承自 Object) |