永发信息网

C++中,截图屏幕的几行代码看不懂,求解释啊

答案:2  悬赏:0  手机版
解决时间 2021-01-27 01:57
  • 提问者网友:趣果有间
  • 2021-01-26 01:07
HDC hDc,memDc;
hDc = GetDC(GetDesktopWindow());
memDc = CreateCompatibleDC(hDc);
HBITMAP hBitMap;
hBitMap = CreateCompatibleBitmap(hDc,with,hight);
SelectObject(memDc,hBitMap);
BitBlt(memDc,0,0,with,hight,hDc,0,0,SRCCOPY);

以上,效果就是把屏幕截图放入了hBitMap中。但是我不明白,GetDC(GetDesktopWindow());这个是获得句柄而已。而最后的BitBlt, 他是把设备上下文里面的像素,放到了menDC里面的hBitMap位图中。

注意,这里一个是设备上下文,一个却是位图。这是不对等的关系啊,你要么设备上下文传给设备上下文,你要么位图传给位图,你一个设备上下文传给位图这算什么?

还有,设备上下文是设备上下文,里面的像素是像素。以上你能直接读设备上下文的像素,为何不能直接写入设备上下文,而非要弄个位图出来干什么?
最佳答案
  • 五星知识达人网友:孤老序
  • 2021-01-26 01:57
HDC hDc,memDc;
hDc = GetDC(GetDesktopWindow()); //取桌面的设备 hdc
memDc = CreateCompatibleDC(hDc); //创建与hdc(即桌面)兼容的设备memDc
HBITMAP hBitMap;
hBitMap = CreateCompatibleBitmap(hDc,with,hight); //创建与桌面兼容的画布
SelectObject(memDc,hBitMap); //关联 设备 和 画布
BitBlt(memDc,0,0,with,hight,hDc,0,0,SRCCOPY); //把桌面往兼容设备里复制
一个设备(笔,画刷....) ,再准备一张画布(一个内存空间), 就可以作画了. 要真正的得到一个图, 总要有东西把原图放进去吧. 所以有了, 兼容的设备和画布.
全部回答
  • 1楼网友:一叶十三刺
  • 2021-01-26 03:07
我不会~~~但还是要微笑~~~:)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯