[求助]LoadImage载入图像后HBITMAP的保存问题

mconetemp 2011-07-26 10:14:35
前几天在论坛发帖,大家指出了我“在OnDraw()函数中使用LoadImage”的错误

现在我对程序进行了一些修改,我把LoadImage只加载一次,返回的HBITMAP变量存储起来,之后再每次的OnDraw()函数中调用CBitma::fromhandle得到一个CBitmap指针,进行贴图。

但是问题是出了第一次外,之后每次在调用fromhandle()中均会有DEBUG_ASSERT的错误提示。
我在想是不是这个变量没法长期保存呢?我应该怎么解决这个问题呢?
...全文
281 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
AddSteel 2011-07-28
  • 打赏
  • 举报
回复
在看到的代码里,貌似都是先把图像数据拷贝到申请一块的内存里,然后再来用指针处理``保存的话就是文件操作进行的```句柄就不了解了```不过那是对BMP的``对于JPG怎么搞就不了解了``可能是要用到句柄吧``
mconetemp 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wltg2001 的回复:]

你好,我查到,FormHandle得到的CBitmap指针也是临时的,也就是不能保存下来啊,我才想是不是可以每次调用FormHandle得到,但是也不对…
==========
你的代码呢?
[/Quote]

------------
pbmp= (HBITMAP)::LoadImage(。。。。。)
CBitmap* pbmp=CBitmap::Fromhandle(hbmp)

这两句放在Ondraw外执行一次
----------------------
HBITMAP pbmp
CBitmap* pbm
这个是类成员变量 在Ondraw中会用到
----

这个代码就是最基本的啊,Ondraw中用CBitmap*贴图,保存的这个也有错,MSDN上说是临时的
mconetemp 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 addsteel 的回复:]

看了下代码,个人觉得你的CBitmap* pbmp=CBitmap::Fromhandle(hbmp)的用法有问题,因为Fromhandle(hbmp)是返回静态的CBitmap指针``所以是不是需要强制转换一下~????
[/Quote]


恩?这个我加上了也一样呀~
VC不是会自动类型转换的么~
wltg2001 2011-07-27
  • 打赏
  • 举报
回复
你好,我查到,FormHandle得到的CBitmap指针也是临时的,也就是不能保存下来啊,我才想是不是可以每次调用FormHandle得到,但是也不对…
==========
你的代码呢?
AddSteel 2011-07-27
  • 打赏
  • 举报
回复
看了下代码,个人觉得你的CBitmap* pbmp=CBitmap::Fromhandle(hbmp)的用法有问题,因为Fromhandle(hbmp)是返回静态的CBitmap指针``所以是不是需要强制转换一下~????
mconetemp 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 addsteel 的回复:]
引用 9 楼 mconetemp 的回复:
re,我并不是想把图片保存下来,我想保存的是那个句柄HBITMAP,我表达的这么不清楚么……^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

抱歉,没看到.不过觉得是要功能实现就可以了,干嘛非要用句柄???我也是初学数字图像,觉得句柄貌似没什么用啊???可能是刚接触不了解吧```
[/Quote]


嗯,没事,我也是初学,贴图方法都是刚学的,我觉得句柄似乎也没啥用,但是上一个帖子好多人让我那样,我就试着做了下,但是就出问题了,so....又回来提问了
AddSteel 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mconetemp 的回复:]
re,我并不是想把图片保存下来,我想保存的是那个句柄HBITMAP,我表达的这么不清楚么……^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[/Quote]
抱歉,没看到.不过觉得是要功能实现就可以了,干嘛非要用句柄???我也是初学数字图像,觉得句柄貌似没什么用啊???可能是刚接触不了解吧```
AddSteel 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 mconetemp 的回复:]
恩?这个我加上了也一样呀~
VC不是会自动类型转换的么~
[/Quote]
我的意思是说由于指针是静态的而你在后续的代码中对储存原图像数据的内存进行了什么操作``也许你可以先自己构造个内存在把原图像的数据拷贝到里面去```我的浏览器不能看你的源代码``所以只是猜猜啊``
mconetemp 2011-07-26
  • 打赏
  • 举报
回复
自己顶一下……咕~~(╯﹏╰)b,新手求教,到底把什么东西放在外面做一次就可以了?
mconetemp 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wltg2001 的回复:]
但是问题是出了第一次外,之后每次在调用fromhandle()中均会有DEBUG_ASSERT的错误提示。
我在想是不是这个变量没法长期保存呢?我应该怎么解决这个问题呢?
============
你这个和你前面说的还不是一个道理!
你如果不用HBITMAP贴图,而是想通过FormHandle,用CBitmap来贴的话,FormHandle的工作也应该在外面做,做一次就行了,比如放在OnI……
[/Quote]


你好,我查到,FormHandle得到的CBitmap指针也是临时的,也就是不能保存下来啊,我才想是不是可以每次调用FormHandle得到,但是也不对……
mconetemp 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cxj6543546 的回复:]
HBITMAP hbitbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
(m_strDlgUserPath + m_SetSize.m_strArrayRuselt.GetAt(m_nTitlePicNum))/*绝对路径*/,
IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
……
[/Quote]

你好,这是答非所问啊.....
我原帖里面说了,是HBITMAP的保存的问题,你这是啥啊大哥……
wltg2001 2011-07-26
  • 打赏
  • 举报
回复
但是问题是出了第一次外,之后每次在调用fromhandle()中均会有DEBUG_ASSERT的错误提示。
我在想是不是这个变量没法长期保存呢?我应该怎么解决这个问题呢?
============
你这个和你前面说的还不是一个道理!
你如果不用HBITMAP贴图,而是想通过FormHandle,用CBitmap来贴的话,FormHandle的工作也应该在外面做,做一次就行了,比如放在OnInitDialog或是OnCreate中。
cxj6543546 2011-07-26
  • 打赏
  • 举报
回复
HBITMAP hbitbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
(m_strDlgUserPath + m_SetSize.m_strArrayRuselt.GetAt(m_nTitlePicNum))/*绝对路径*/,
IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
m_bitBmptitle.Attach( hbitbmp );
读图片,保存,以上为代码。
mconetemp 2011-07-26
  • 打赏
  • 举报
回复
PS,我是用LoadImage,从指定的文件路径读入了一个图片,句柄保存下来了
mconetemp 2011-07-26
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20110722/14/731edaf5-45c0-4fc6-bee1-75e3bcb304a7.html

在这个帖子里大家让我把LoadImage从OnDraw中拿出,确实快了很多,但是就是出现了DEBUG_ASSERT问题
代码几乎一样,只是把HBITMAP变成类的成员而已
mconetemp 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 addsteel 的回复:]
保存图片是不是用OnSaveFile函数响应啊``??
[/Quote]

re,我并不是想把图片保存下来,我想保存的是那个句柄HBITMAP,我表达的这么不清楚么……^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AddSteel 2011-07-26
  • 打赏
  • 举报
回复
要不你把你以前发的帖子或者源代码贴出来看看`````
AddSteel 2011-07-26
  • 打赏
  • 举报
回复
保存图片是不是用OnSaveFile函数响应啊``??

19,468

社区成员

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

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