关于CBitmap 的LoadBitmap
我现在要做一个一图放大小16倍的时候,一个点就要用一张小图来表示,颜色不同要用不同的小图
for( i=0;i<height;i++)
{
for( j=0;j<width;j++)
{
bitmap.LoadBitmap(IDB_BITMAP1+m_pBuff[i*width+j]-1);
bitmap.DrawTransparent(&mem,j*m_nZoom,i*m_nZoom,RGB(192,192,192));
}
}
可是放大,缩小,这样几次以后,就会反应很慢,出现卡到死机的问题,这个到底要怎么解决呢~
DrawTransparent这个函数是我自己写的,没有问题,循环里要只有bitmap.LoadBitmap(IDB_BITMAP1+m_pBuff[i*width+j]-1);也会出现一样的结果的```这样大量的loadbitmap是不是有问题的啊`????
问题点数:100、回复次数:10Top
1 楼jun_01(无名小卒)回复于 2006-09-14 13:10:42 得分 30
1,你load之后没有释放,这样也许有问题
2,图片放大,那么一个点变成了数个点,你只要用原来的颜色填充就可以了,不用图片Top
2 楼snowbirdfly(专心搞好嵌入式~~~)回复于 2006-09-14 13:13:38 得分 40
这样几次以后,就会反应很慢,出现卡到死机的问题~
同意楼上,应该是申请的内存没有释放~~~
Top
3 楼cleverwyq(此人三无)回复于 2006-09-14 13:14:32 得分 10
DrawTransparent里面是不是有gdi资源没有及时释放
code看看Top
4 楼snowbirdfly(专心搞好嵌入式~~~)回复于 2006-09-14 13:17:51 得分 0
这样大量的loadbitmap是不是有问题的啊`????
这个应该没有问题~~
因为loadbitmap仅仅是从内存中载入位图,自身没有参与内存申请~~~
我觉得可能是你自己写的函数问题~~~Top
5 楼yjgx007(还不结帖?!听妈妈的话! http://www.geekclaw.com)回复于 2006-09-14 13:20:56 得分 20
每次drawtransparent后,bitmap.deletobjectTop
6 楼livedeal(怀念)回复于 2006-09-14 13:24:20 得分 0
snowbirdfly(专心搞好嵌入式~~~) 你都一个星了啊,我都好久没有来了,以前还和你一样的`~~
我这个是这样的,一个点是红色的话,放大的16以后,显示出来的是一张图,就不是单单的红了,循环里面,我只放了bitmap.LoadBitmap(IDB_BITMAP1+m_pBuff[i*width+j]-1);也是一样的~可放大10位,没有用这个的放,是没有问题的,bitmap CreateBitmap一个要释放,LoadBitmap到底要不要的呢~??????Top
7 楼livedeal(怀念)回复于 2006-09-14 13:29:22 得分 0
好了,呵呵`Top
8 楼zhucde(【風間苍月】★<==>★【虚拟闲人】)回复于 2006-09-14 13:32:37 得分 0
Load一次然后绘制的时候用BitBlt改变显示大小呢?Top
9 楼jun_01(无名小卒)回复于 2006-09-14 13:37:58 得分 0
You can use the CGdiObject::DeleteObject function to delete bitmap loaded by the LoadBitmap function, or the CBitmap destructor will delete the object for you.
=====================
由于你的bitmap不是局部变量,所以它不会自已释放资源Top
10 楼joy2th()回复于 2006-09-14 14:16:06 得分 0
程序员的福音---去www.mylinux.com.cn看看吧,程序员的图书馆
最全面的程序开发资料网www.mylinux.com.cn
包罗java,linux,数据库,安全等等技术资料,更有众多软件外包项目
我们的qq群:15096318 学习程序的都可以来
华资软件作为一家专业的软件公司,现公开承接各种软件外包项目.
www.mylinux.com.cn国内最大的网上软件加工厂,提供最完善的软件外包服务,采用流水型操作流程。
中国软件业的发展不缺人才也不缺资金,缺的是人才的组织和管理,MyLinux平台的建设解决了软件人才的组织和管理问题,将每一项目最合适的软件开发人才以最有效率的形式组织在一起,从而取得1+1〉2的效果。
MyLinux(www. MyLinux.com.cn)由上海巨灵信息技术有限公司主办,是目前国内最大的网上软件加工厂,该网站将提供最完善的软件外包服务,采用流水型操作流程。
详情请登陆www. MyLinux.com.cn
您可把您的具体要求发布在http://www.mylinux.com.cn/guiderAction.do?type=7上,并留下联系方式,我们网站的技术部门和客服会在第一时间审核安排.
Top




