求助 如何将屏幕上的画面载入到缓存DC中?

Watchmen_ 2012-06-04 09:16:16
想将屏幕上画的矩形载入到缓存DC中,然后再从缓存DC中将位

图移位后导出到屏幕上。

以下是我写的代码,运行时没有达到效果,好像并没有将屏

幕上画的矩形载入到缓存DC中。还请大家给指点一下!


void CMycure_1View::OnDraw(CDC* pDC)
{
CMycure_1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

CDC dc;

dc.CreateCompatibleDC(pDC);

pDC->Rectangle(900,200,1000,300);

dc.BitBlt(0,0,1024,768,pDC,0,0,SRCCOPY);

pDC->BitBlt(0,0,1024,768,&dc,400,0,SRCCOPY);

}
...全文
129 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Watchmen_ 2012-06-04
  • 打赏
  • 举报
回复
请大家看一下这段代码,就实现了我想要的功能,可惜需要载入Bitmap,
不明白为什么在载入Bitmap后就可以把在屏幕上画的矩形载入到缓存DC中,请大家帮帮忙给解释一下!

void CWwwwwwwView::OnDraw(CDC* pDC)
{
CWwwwwwwDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

CBitmap bitmap;

CDC dc;

dc.CreateCompatibleDC(pDC);

bitmap.LoadBitmap(IDB_BITMAP1);

dc.SelectObject(& bitmap);

pDC->BitBlt(0,0,1024,768,&dc,0,0,SRCCOPY);

pDC->Rectangle(900,200,1000,300);

dc.BitBlt(0,0,1024,768,pDC,0,0,SRCCOPY);

pDC->BitBlt(0,0,1024,768,&dc,300,0,SRCCOPY);

}
Watchmen_ 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
dc.BitBlt(0,0,1024,768,pDC,0,0,SRCCOPY);
这句话不对,你画的矩形900,200,1000,300,那么你拷贝的顶点也应该跟着变
dc.BitBlt(0,0,1024,768,pDC,900,200,SRCCOPY);
[/Quote]

"袍哥"我是想把整个屏幕都拷贝到缓存DC中。
三条猫 2012-06-04
  • 打赏
  • 举报
回复
dc.BitBlt(0,0,1024,768,pDC,0,0,SRCCOPY);
这句话不对,你画的矩形900,200,1000,300,那么你拷贝的顶点也应该跟着变
dc.BitBlt(0,0,1024,768,pDC,900,200,SRCCOPY);
Watchmen_ 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
酱紫啊……
[/Quote]

呵呵,用点胶水就行。会和浆子的都快没有了吧!
Watchmen_ 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
dc你就当做画板,bitmap你就当做画布,要用画板作画,你得把画布给铺上吧
[/Quote]

呵呵谢谢“袍哥”。
微wx笑 2012-06-04
  • 打赏
  • 举报
回复
酱紫啊……
三条猫 2012-06-04
  • 打赏
  • 举报
回复
dc你就当做画板,bitmap你就当做画布,要用画板作画,你得把画布给铺上吧
Watchmen_ 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
你在创建dc之后,还要再创建一个bitmap,
bitmap_.CreateCompatibleBitmap(&dc, width_, height_);

然后选择使用bitmap
dc.SelectObject(&bitmap);就可以拷贝了
[/Quote]

谢谢“袍哥”,功能实现了,

还想请教一下“袍哥”:
bitmap_.CreateCompatibleBitmap(&dc, width_, height_);

dc.SelectObject(&bitmap);

这两句的实质作用是什么?

为什么直接不能在缓存DC中直接画图然后拷贝到屏幕上显示?
buyong 2012-06-04
  • 打赏
  • 举报
回复
that's right
[Quote=引用 4 楼 的回复:]

你在创建dc之后,还要再创建一个bitmap,
bitmap_.CreateCompatibleBitmap(&dc, width_, height_);

然后选择使用bitmap
dc.SelectObject(&bitmap);就可以拷贝了
[/Quote]
三条猫 2012-06-04
  • 打赏
  • 举报
回复
你在创建dc之后,还要再创建一个bitmap,
bitmap_.CreateCompatibleBitmap(&dc, width_, height_);

然后选择使用bitmap
dc.SelectObject(&bitmap);就可以拷贝了

15,979

社区成员

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

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