using System; using System.Drawing; using System.Drawing.Imaging; namespace Microsoft.Drawing { /// /// 位图的属性,已锁定 /// public sealed class LockedBitmapData : DisposableMini { private Bitmap m_Bitmap;//位图 private BitmapData m_BitmapData;//属性 /// /// 获取或设置返回此 System.Drawing.Imaging.BitmapData 对象的 System.Drawing.Bitmap 对象中像素信息的格式。 /// public PixelFormat PixelFormat { get { return this.m_BitmapData.PixelFormat; } set { this.m_BitmapData.PixelFormat = value; } } /// /// 获取或设置 System.Drawing.Bitmap 对象的像素宽度。这也可以看作是一个扫描行中的像素数。 /// public int Width { get { return this.m_BitmapData.Width; } set { this.m_BitmapData.Width = value; } } /// /// 获取或设置 System.Drawing.Bitmap 对象的像素高度。有时也称作扫描行数。 /// public int Height { get { return this.m_BitmapData.Height; } set { this.m_BitmapData.Height = value; } } /// /// 获取或设置 System.Drawing.Bitmap 对象的跨距宽度(也称为扫描宽度)。 /// public int Stride { get { return this.m_BitmapData.Stride; } set { this.m_BitmapData.Stride = value; } } /// /// 获取或设置位图中第一个像素数据的地址。它也可以看成是位图中的第一个扫描行。 /// public IntPtr Scan0 { get { return this.m_BitmapData.Scan0; } set { this.m_BitmapData.Scan0 = value; } } /// /// 保留。不要使用。 /// public int Reserved { get { return this.m_BitmapData.Reserved; } set { this.m_BitmapData.Reserved = value; } } /// /// 构造函数 /// /// 位图 /// 读写模式 /// 像素格式 public LockedBitmapData(Bitmap bitmap, ImageLockMode flags, PixelFormat format) { this.m_Bitmap = bitmap; Rectangle rect = new Rectangle(0, 0, bitmap.Width, bitmap.Height); this.m_BitmapData = this.m_Bitmap.LockBits(rect, flags, format); } /// /// 释放资源 /// /// 释放托管资源为true,否则为false protected override void Dispose(bool disposing) { if (this.m_Bitmap != null) { this.m_Bitmap.UnlockBits(this.m_BitmapData); this.m_Bitmap = null; this.m_BitmapData = null; } } } }