首页
社区
课程
招聘
位图保存大小?
2006-9-6 12:19 3845

位图保存大小?

2006-9-6 12:19
3845
我桌面显示属性大小是800*600       
invoke CreateCompatibleDC,0(换成窗口dc一样)
mov hmydc,eax

invoke CreateCompatibleBitmap,hmydc, cxClient,cyClient
mov hmybitmap,eax
invoke SelectObject,hmydc,hmybitmap
invoke PatBlt ,hmydc,0,0,cxClient,cyClient,WHITENESS

保存时,[cxClient和cyClient]大小超过570*570,位图上半部分超的部分就变成黑块了?还原成570*570就没黑块了。

怎样实现大尺寸,比如:570*770,实在是解决不了。有谁能解决吗?帮帮忙?(直接回帖)

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
flyflyfly 2006-9-7 09:08
2
0
invoke CreateCompatibleDC,0
(换成当前程序窗口后,当前窗口是570*670,居然保存下来后变成全黑了?)
雪    币: 342
活跃值: (21)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
月中人 18 2006-9-7 15:50
3
0
HDC hdc,hmemdc;
HBITMAP hmembmp,hbmp;

hdc=GetDC(GetDesktopWindow());
hmemdc=CreateCompatibleDC(hdc); //创建兼容设备句柄
hmembmp=CreateCompatibleBitmap(hdc,800,600); //从hdc创建兼容位图
hbmp=(HBITMAP)SelectObject(hmemdc,hmembmp); //给兼容DC选择兼容位图
BitBlt(hmemdc,0,0,800,600,hdc,0,0,SRCCOPY); //现在画到兼容位图,用StretchBlt也行
DeleteDC(hmemdc);
DeleteDC(hdc);

GetBitmapBits(hmembmp,800*600*3,pt); //把兼容位图的图像数据保存到BYTE *pt指向的一块内存。再做位图头就可以保存成bmp文件。

注:不能用来保存DirectShow的图像。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
flyflyfly 2006-9-10 11:27
4
0
保存位图不得大于当前屏幕尺寸,想保存大尺寸可以自己分段构造,通过系统放大可以放大,但保存位图时还是受到屏幕尺寸限制。
版主,此帖可删了。
游客
登录 | 注册 方可回帖
返回