看流星社区

 找回密码
 注册账号
查看: 2650|回复: 0

CImageList类中读写图像数据

[复制链接]

该用户从未签到

发表于 2017-6-3 14:26:39 | 显示全部楼层 |阅读模式
CImageList类中读写图像数据

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{
HBITMAPhbmImage;//整个图象的HBITMAP句柄
HBITMAPhbmMask;//图像掩码句柄
intUnused1;
intUnused2;
RECTrcImage;//指定图像区域的范围,也就是从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
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-20 23:17

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表