StretchBlt 会变成黑屏幕

wowo05 2012-11-16 01:35:05
写了一个缩放的程序,使用CDC StretchBlt函数,没有成功,直接生成黑屏

CImage img
CString smap = path+"03.jpg";
img.Load(smap);
CBitmap BmpTemp;
//CDC *memDC;
CDC *DcTemp = CDC::FromHandle(img.GetDC());
//DcTemp->SetStretchBltMode(HALFTONE); // HALFTONE COLORONCOLOR
DcTemp->StretchBlt(0,0,(int)img.GetWidth()*0.05,(int)img.GetHeight()*0.05,DcTemp,0,0,img.GetWidth(),img.GetHeight(),SRCCOPY);
int imap = BmpTemp.CreateCompatibleBitmap(DcTemp,(int)img.GetWidth()*0.05,(int)img.GetHeight()*0.05);
smap.Format("%d",imap);
AfxMessageBox(smap);
HBITMAP hbm = (HBITMAP)BmpTemp;
img.Attach(hbm);
CString strJpgs = path+"$$"+filetime +"s.jpg";
img.Save(strJpgs);
...全文
265 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gwlhww 2012-11-16
  • 打赏
  • 举报
回复
临时DC.selectobject()将放入临时cbimap时反回的指针放回去。不然cbimap被临时DC使用。你不能要cbitmap. cbimap就是你缩小后的
gwlhww 2012-11-16
  • 打赏
  • 举报
回复
CreateCompatibleDC()创建临时DC,将一个监时的cbitmap放入DC中,StretchBlt
wowo05 2012-11-16
  • 打赏
  • 举报
回复
截屏 已经处理好了,现在的想法就是将截屏后的图片变成缩成一张小图
gwlhww 2012-11-16
  • 打赏
  • 举报
回复
CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL);截屏要做部分。如果做全屏。有些电脑要80ms,用户就会卡。
gwlhww 2012-11-16
  • 打赏
  • 举报
回复
你要截屏。就要创建一个显示DC
wowo05 2012-11-16
  • 打赏
  • 举报
回复
没有窗口dc, 放在后台截屏的,要做一个缩小图
wowo05 2012-11-16
  • 打赏
  • 举报
回复
是 漆黑一片
sumos 2012-11-16
  • 打赏
  • 举报
回复
img.Save(strJpgs); 这个保存的结果是 漆黑一片 吗? CDC *DcTemp = CDC::FromHandle(img.GetDC()); DcTemp->StretchBlt 不明白这里怎么没有窗口dc?
wowo05 2012-11-16
  • 打赏
  • 举报
回复
GetDc() 如何查看是否黑屏?
gwlhww 2012-11-16
  • 打赏
  • 举报
回复
imag.GetDc();image,有没有DC,先用 基它DC看是否黑屏。imag.GetDc获取一次。要ReleaseDC
wowo05 2012-11-16
  • 打赏
  • 举报
回复
自己顶一下

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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