菜鸟用MFC做屏幕截图玩,用HDMI线外接显示器的时候,图形大小不对 求解

qwerty448 2016-04-04 08:16:02
代码是COPY的 大概意思懂,用笔记本电脑本身的显示器没问题,一外接,图形只能显示一部分,不 知道问题出在哪?
原理大概是把屏幕的内容考到内存中,把窗口全屏,然后从内存中取出屏幕的内容。

CDC *pDC=GetDesktopWindow()->GetDC();//屏幕DC
int BitPerPixel = pDC->GetDeviceCaps(BITSPIXEL);//获得颜色模式
int Width = pDC->GetDeviceCaps(HORZRES);
int Height = pDC->GetDeviceCaps(VERTRES);
CDC memDC;//内存DC
memDC.CreateCompatibleDC(pDC);
CBitmap memBitmap, *oldmemBitmap;//建立和屏幕兼容的bitmap
memBitmap.CreateCompatibleBitmap(pDC, Width, Height);
oldmemBitmap = memDC.SelectObject(&memBitmap);//将memBitmap选入内存DC
memDC.BitBlt(0, 0, Width, Height, pDC, 0, 0, SRCCOPY);//复制屏幕图像到内存DC
ShowWindow(SW_SHOWMAXIMIZED);
CClientDC cdc(this);
cdc.BitBlt(0,0,Width,Height,&memDC,0,0,SRCCOPY);
memDC.SelectObject(oldmemBitmap);
memDC.DeleteDC();
ReleaseDC(pDC);


有知道朋友告诉我啊
...全文
665 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
归途醉染 2018-03-05
  • 打赏
  • 举报
回复
引用 9 楼 MiDEu 的回复:
请问 是HDMI信号接进来然后做截图吗?
HDMI信号怎么接受 在显示器上直接插入HDMI线 就可以直接接受信号吗?
MiDEu 2016-07-13
  • 打赏
  • 举报
回复
请问 是HDMI信号接进来然后做截图吗?
qwerty448 2016-04-08
  • 打赏
  • 举报
回复
经过我的验证 应该是系统处理的时候给的图像就是变形的
gaodlike 2016-04-06
  • 打赏
  • 举报
回复
楼主 你用你的截图和 qq的截图对比一下 谁的更清晰? 我也写过一个截图的,但是不去qq截图的清晰。
qwerty448 2016-04-06
  • 打赏
  • 举报
回复
引用 6 楼 qwerty448的回复:
[quote=引用 5 楼 qq_26968975的回复:]楼主 你用你的截图和 qq的截图对比一下 谁的更清晰? 我也写过一个截图的,但是不去qq截图的清晰。
要是原来的显示器 就是原图吧 毕竟bitblt 就是用copy的 一样清晰 但是换到外接的 就不行[/quote] 我没有弄保存成文件 因为vc在这方面代码太长看不懂
qwerty448 2016-04-06
  • 打赏
  • 举报
回复
引用 5 楼 qq_26968975的回复:
楼主 你用你的截图和 qq的截图对比一下 谁的更清晰? 我也写过一个截图的,但是不去qq截图的清晰。
要是原来的显示器 就是原图吧 毕竟bitblt 就是用copy的 一样清晰 但是换到外接的 就不行
qwerty448 2016-04-05
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903的回复:
试试
int Width =  GetSystemMetrics(SM_CXSCREEN);
int Height = GetSystemMetrics(SM_CYSCREEN);
谢谢 不过我可以告诉你另外一件事 我本来还有做过一个截图程序用 模拟系统按键截图,在从剪贴板取出图片,那个剪贴板中的图没问题,取出来感觉就是被放大了,只能显示一部分,我知道我上面放的代码宽高取得不完整,可是即便取得完整,bitblt出来的就是感觉被放大了
qwerty448 2016-04-05
  • 打赏
  • 举报
回复
引用 2 楼 qwerty448的回复:
[quote=引用 1 楼 zgl7903的回复:]试试
int Width =  GetSystemMetrics(SM_CXSCREEN);
int Height = GetSystemMetrics(SM_CYSCREEN);
谢谢 不过我可以告诉你另外一件事 我本来还有做过一个截图程序用 模拟系统按键截图,在从剪贴板取出图片,那个剪贴板中的图没问题,取出来感觉就是被放大了,只能显示一部分,我知道我上面放的代码宽高取得不完整,可是即便取得完整,bitblt出来的就是感觉被放大了[/quote] 换句话来说,就是屏幕没地方画剩下来的部分
zgl7903 2016-04-05
  • 打赏
  • 举报
回复
试试
int Width =  GetSystemMetrics(SM_CXSCREEN);
int Height = GetSystemMetrics(SM_CYSCREEN);
qwerty448 2016-04-05
  • 打赏
  • 举报
回复
突然觉得可以 晚上一回去就试试

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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