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;
}
}
}
}