MFC图片分割的问题

wangshuhe123 2015-08-10 04:39:04
我有一组合并在一起的bmp图片,大小为20*80,其中20*20大小为一个图片,我已经把它保存到CImageList类中了,我要怎么对这个组合图片进行分割,也就是把它分割为4个图片供我使用。
...全文
161 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangshuhe123 2015-08-11
  • 打赏
  • 举报
回复
引用 6 楼 gz_qmc 的回复:
CImageList的“分割”是不能指定分割位置的 比如,你创建了20X20的CImageList 而你装入的图片是20X80的或者80X20的 都会按顺序以20的步长划分 按你的描述,你就是瞎操心,你倒是画一个出来看啊,画出来自己不就清楚了吗?
解决了,太感谢了
gz_qmc 2015-08-11
  • 打赏
  • 举报
回复
CImageList的“分割”是不能指定分割位置的 比如,你创建了20X20的CImageList 而你装入的图片是20X80的或者80X20的 都会按顺序以20的步长划分 按你的描述,你就是瞎操心,你倒是画一个出来看啊,画出来自己不就清楚了吗?
wangshuhe123 2015-08-11
  • 打赏
  • 举报
回复
引用 4 楼 gz_qmc 的回复:
你这问题问的有点混乱 你分割好了,是在同一个程序里用呢,还是保存成文件供应其他程序用呢? 如果是供应其他程序用,那还不如用PS来的快 如果是程序里备用,双缓冲就解决了,怎么会有那么复杂呢? 你可能要显示4个帧的动画,那就更简单了 CImageList你创建成20X20的,你装载图片的时候就已经自动分隔好了 你显示0,1,2,3号,就是按20X20规格分割好的各自部分了
我就是想在自己的程序里使用,因为我做的是一个按钮的四种不同状态下的图片,所以图片合并到一起使用 更加的清晰,不知道你最后说的那种方法要如何实现,我在Create时只能指定图片的大小呀,无法指定其分割位置
gz_qmc 2015-08-11
  • 打赏
  • 举报
回复
你这问题问的有点混乱 你分割好了,是在同一个程序里用呢,还是保存成文件供应其他程序用呢? 如果是供应其他程序用,那还不如用PS来的快 如果是程序里备用,双缓冲就解决了,怎么会有那么复杂呢? 你可能要显示4个帧的动画,那就更简单了 CImageList你创建成20X20的,你装载图片的时候就已经自动分隔好了 你显示0,1,2,3号,就是按20X20规格分割好的各自部分了
wangshuhe123 2015-08-11
  • 打赏
  • 举报
回复
引用 2 楼 pcradio 的回复:

CImageList* pImageList = new CImageList;
pImageList->Create( MAKEINRESOURCE(IDB_BITMAP1),  20,  0, RGB(0, 0, 0) );
for(int index = 0; index < GetImageCount; index++)
{
     IMAGEINFO imgInfo;
     GetImageInfo( int index, &imgInfo);
     HBITMAP hBmp = imgInfo.hbmImage;// 这里就是分割的单个位图
 
}
不好用呀,我是这么写的 if(m_ImageList.Create(m_bitmap.bmWidth,m_bitmap.bmHeight,ILC_COLORDDB|ILC_MASK,1,1)) { m_ImageList.Add(&m_bitmapImage,clrMask); IMAGEINFO imgInfo; m_ImageList.GetImageInfo( 0, &imgInfo); HBITMAP hBmp = imgInfo.hbmImage; m_bitmapImage.DeleteObject(); m_bitmapImage.Attach(hBmp); m_ImageList.Add(&m_bitmapImage,RGB(0,0,0)); SetBitmapAndTextSize(); } 然后用CImageList的Draw函数来绘制图片,但是图片还是没有被分割
阿源是少年 2015-08-10
  • 打赏
  • 举报
回复

CImageList* pImageList = new CImageList;
pImageList->Create( MAKEINRESOURCE(IDB_BITMAP1),  20,  0, RGB(0, 0, 0) );
for(int index = 0; index < GetImageCount; index++)
{
     IMAGEINFO imgInfo;
     GetImageInfo( int index, &imgInfo);
     HBITMAP hBmp = imgInfo.hbmImage;// 这里就是分割的单个位图
 
}
  • 打赏
  • 举报
回复
用opencv或者cximage之类的图像处理库吧,不然就自己实现bmp的数据切割和文件生成

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧