现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

CImageList类中读写图像数据

2012-08-12 06:40 工业·编程 ⁄ 共 1401字 ⁄ 字号 暂无评论

1、CImageList类写入数据使用Add函数

int Add(

CBitmap* pbmImage,

CBitmap* pbmMask

);

int Add(

CBitmap* pbmImage,

COLORREF crMask

);

int Add(

HICON hIcon

);

举例:

CImageList m_ImageList;// CImageList对象,存储图像

Int m_nImageWidth = 120;//目标图像宽度

Int m_nImageHeight = 60;// 目标图像高度

CxImage imageTmp;// CxImage对象,原始图像

CxImage imageTmpCrop;// CxImage对象,目标图像

imageTmp.Load(“C://1.BMP”);//加载图像

imageTmpCrop.Copy(imageTmp);

imageTmp.Resample2(m_nImageWidth,m_nImageHeight,CxImage::IM_BICUBIC2,CxImage::OM_REPEAT,&imageTmpCrop,true);//缩放图象

HANDLE hBitmapHandle = imageTmpCrop.MakeBitmap();//将图像转换成句柄

CBitmap *pBitmap;

pBitmap=new CBitmap;

pBitmap->Attach(hBitmapHandle);

m_ImageList.Add(pBitmap,RGB(255,0,255));//将图像插入m_ImageList对象中

if(pBitmap)

{

delete pBitmap;

}

2、CImageList类读取数据使用GetImageInfo函数

BOOL GetImageInfo(

int nImage,

IMAGEINFO* pImageInfo

) const;

IMAGEINFO结构如下:

typedef struct _IMAGEINFO {

HBITMAP hbmImage;//整个图象的HBITMAP句柄

HBITMAP hbmMask;//图像掩码句柄

int Unused1;

int Unused2;

RECT rcImage;//指定图像区域的范围,也就是从hbmImage中区域范围得到指定的图像

} IMAGEINFO, *LPIMAGEINFO;

注:如果想得到指定子图像数据,必须根据指定子图像区域rcImage从整个图像hbmImage中取出数据。

举例

CImageList m_ImageList;// CImageList对象,存储图像

IMAGEINFO subImageInfo;

Int nIndex = 0;

m_ImageList.GetImageInfo(nIndex,&subImageInfo);//得到图像信息数据

CxImage ciShow;//整个图像

CxImage ciSubShow;//子图像

ciShow.CreateFromHBITMAP(subImageInfo.hbmImage);//得到整个图像

ciSubShow.Crop(subImageInfo.rcImage,& ciSubShow);//得到子图像

ciSubShow.Save(“C://2.BMP”);//保存图像

CxImage是开源图像处理库,下载地址:http://www.codeproject.com/KB/graphics/cximage.aspx

给我留言

留言无头像?