现有一张图片,主程序和DLL窗体中都要用到,图片用bitmap读取,现在传一个bmp.canvas.handle给dll,dll中声明
cvs: TCanvas; cvs := TCanvas.create;
cvs := 传来的 HDC
但是在dll中用copyrect来测试,画不出图来,如果用这个方法在主窗体确实可以画出来的,求助!!!!!!!
解决方案 »
- 请问 我用delphi7 用rave制作报表,我想在打印预览时,在报表上点右键,将报表导出到excel电子表格里。请指点!
- 在Delphi中播放视频文件(急........)
- delphi里有没有label1(i)这样的数组形式吗?急!!!!!!
- 急切求救!! 磁卡编程 (没有接口函数,直接用Spcomm编程)!
- 我的sql语句错误,请看看
- 高分请教cs机构缓存问题,在线等待!
- 为什么dbgrid的rowcount只有23啊?怎么使它变多啊?
- 用distinct 怎样根据两个字段找唯一条纪录
- 这里有网友认识长沙大学的朱振元和朱承的吗??????
- *** 请问Delphi5的Update Pack 1#哪儿有当?谢谢! ***
- delphi调用COM组件问题
- 【求助】百度新闻读取器程序开发
现在我传了一个HBitmap至dll,目前问题就是如何通过HBitmap将图片画到form上,Canvas.Draw参数只能是HDC使用StretchDIBits需要占用一定内存,不喜欢使用CreateCompatibleDC,那么我主程序的HDC就没有了,必须DeleteDC(dll的HDC)后,主程序才能再画出图来求解………………………………
说白了,就是一个app,一个dll,app中有一个bitmap,如何是2个都使用同一个图片,并且,可以同时使用,上面的方法,其中HDC那个就不能同时使用,很奇怪
表达不出来了,代码太多,我自己看的都累,就是实现主程序和dll共享一个bitmap,目的就是节省内存不要全局变量的方式,感觉不感觉,不直接传送bitmap类为参数,只用windows标准的,如Hbitmap等等这样说可能容易理解
晕啊,这个问题这么难???一张不需要改动的图片,主程序和dll难道不能共用????算了,俺DLL大不了再读一遍,占内存就占内存吧,烦不了了………………
不过并不能减少内存的使用
首先,谢谢楼上的回答,不过很可惜,这个方法很早就试过了有一个很关键的问题,DLL中如何使用???用一个TBitmap???ok,完全可以,但是dll不用时,这个tbitmap释放不,你试一下就会发现,一旦释放,内存会跟着释放,即使你把bitmap的handle换个指向,只要你free了,图片就没了
谢谢楼上的回答 API试过几种,目前试过的不是要HDC就是要HBITMAP,这两个都试过HDC有一个大问题,当在dll中声明一个hdc指向图片,用是可以用,但是主程序的hdc就失效了,除非我释放掉dll中hdc才行,就是不能共用,万一同时绘图……HBITMAP,用这个还是需要先申请一块内存,然后才能画,显然与我的初衷相违背……
没有分了,这个帖子再问一个问题,win7下有字体渲染,不得不说,很丑!!!!在canvas.textout的时候能否关闭这个渲染,像xp那样的输出效果就好
俺传的是HDC,没有直接传delphi的对象,就是为了避免带一些delphi的dll