本人是菜鸟,我尽量把问题描述清楚,希望图像方面的编程大牛帮我解决。
我要写的是一个画图程序,应用的核心类是开源程序CxImage这个图像类,图像的显示是此类完成的,此类中存储图像信息的是byte* pDib,存储形式是设备无关位图,我想在我的程序中加入画图操作部分,就像Windows画图程序中的铅笔、画刷、长方形等,这些画图操作都需要使用内存设备,调用CreateCompatibleDC函数,这必须使用pDib内存中信息创建一个HBitmap对象,然后将HBitmap对象选进dc中进行操作,操作后将HBitmap中的信息导入到PDib中,这样一进一出需要两个过程,而我需要的程序在画图过程中需要使用PDib信息进行显示,而且需要实时显示,所以我需要对图片的操作直接体现在PDib中,这样我的程序的图片操作与显示就可以同步了,如何让图片操作直接体现在图片存储PDib中?请高手赐教!!
我要写的是一个画图程序,应用的核心类是开源程序CxImage这个图像类,图像的显示是此类完成的,此类中存储图像信息的是byte* pDib,存储形式是设备无关位图,我想在我的程序中加入画图操作部分,就像Windows画图程序中的铅笔、画刷、长方形等,这些画图操作都需要使用内存设备,调用CreateCompatibleDC函数,这必须使用pDib内存中信息创建一个HBitmap对象,然后将HBitmap对象选进dc中进行操作,操作后将HBitmap中的信息导入到PDib中,这样一进一出需要两个过程,而我需要的程序在画图过程中需要使用PDib信息进行显示,而且需要实时显示,所以我需要对图片的操作直接体现在PDib中,这样我的程序的图片操作与显示就可以同步了,如何让图片操作直接体现在图片存储PDib中?请高手赐教!!
解决方案 »
- ATL工程问题
- VC++ 主框加载图片 总有个底色的那个边 不能全部覆盖
- GetDlgItemText()函数取RichEdit中的表情是什么字符?????
- 上海三面
- exe也可以象dll一样导出函数、变量和类吗?请大家多指导,谢谢
- 如何矫正倾斜的图象?比如一幅图(是文字好了。),倾斜了一定角度,我通过什么算法可以算出它的倾斜角度呢?
- 请问listCtrl可以实现多行显示吗?report格式,因为每一列的长度是固定的,但有时文本长度会比较长,一行显示不下,能否用两行显示呢?
- 高分求解限制USB设备使用的解决方案,急!在线等候!
- 用GDI做动画除了要用双缓冲外还要注意什么?
- 如何解决存入数据时的报错
- 为什么在cmd里运行正常。在mfc里出现那么多错误?
- 如何用postmessage模拟ctrl+alt
1:CreateDIBSection() create a HBITMAP(用原图的LPBITMAPINFO) --> copy pDib的位数据到hBitmap的ppvbits.
2:hbitmap选入memdc gdi作图
3:画完选出memdc, 把hbitmap的ppvbits copy回pDib的位数据.
我程序中的图片显示是使用CxImage类中的Draw函数,这个函数使用的是pDib信息,这个函数支持透明显示,这是我不愿意修改这个函数的原因
我想进行图片操作并进行实时显示但还不想更改Draw函数,若Copy到 hBitmap 进行操作后再Copy回PDib 那就不能实时显示了,因为我显示的函数应用的是PDib信息。
"若Copy到 hBitmap 进行操作后再Copy回PDib 那就不能实时显示了,",怎么不能实时显示?画的时候可以直接Get客户区DC在客户区上画,但要反映到实际DIB时,那就需要选入memdc内用gdi作图画到原图上,否则画了等于没画.
难道你是指不用GDI作图..而自己写所有的画这画那实现方法?
我再告诉你为什么你这方法不能实时,若程序使用铅笔在画布上乱画,你这种方法只能是画完了 内存操作完了再Copy回pDib再显示,在铅笔乱画过程中你如何显示?能画一个点就进行一次内存操作吗,你如何连续画点?
若图片操作不能直接体现在pDib上,我就只能重构我的程序了。
可以再看看左面原方块有何反应..
btw..画完就算,不要保存...这是偶N年前编来汉化GBA游戏图片的.