一个关于内存dc问题

linwendong1982 2009-03-27 09:54:37
大家好,一般在图像显示时候用到双缓冲方法根据已知的dc创建个内存dc,例如
HDC MemDC; // memory DC for screen
HBITMAP Membitmap; // bitmap handle to old DC
HDC curHdc = GetDC(hWnd);
MemDC = CreateCompatibleDC(curHdc);
Membitmap = CreateCompatibleBitmap(curHdc, w, h);
HBITMAP pOldBitmap = (HBITMAP)SelectObject(MemDC, Membitmap);

现在我没有已知的dc,想直接创建个内存dc和位图,然后写出来,不要求内存位图显示出来。请问怎么做呢?
...全文
151 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhao1zhong6 2009-03-30
  • 打赏
  • 举报
回复
参数直接为NULL不就行了?
IONPhantom 2009-03-29
  • 打赏
  • 举报
回复
CreateDC, CreateBitmap或者CreateBitmapIndirect 不就是你想要的么
cnzdgs 2009-03-29
  • 打赏
  • 举报
回复
用GetDC(0),最后再ReleaseDC。
linwendong1982 2009-03-27
  • 打赏
  • 举报
回复
现在我就想做一个函数,自己内部创建一个dc可不可以像下面这么搞
DC screenDC, memDC;
HBITMAP bmp = NULL;
HBITMAP bmpOld = NULL;

screenDC = CreateDC("DISPLAY", NULL,
NULL, NULL);
memDC = CreateCompatibleDC(screenDC);
bmp = CreateCompatibleBitmap(screenDC, 1, 1);
bmpOld = (HBITMAP)SelectObject(memDC, bmp);
一条晚起的虫 2009-03-27
  • 打赏
  • 举报
回复
HDC CreateCompatibleDC(
__in HDC hdc
);
Parameters
hdc [in]
Handle to an existing DC. If this handle is NULL, the function creates a memory DC compatible with the application's current screen
biaozai06 2009-03-27
  • 打赏
  • 举报
回复
由MemDC = CreateCompatibleDC(curHdc); 可以看出,内存DC是依赖于用GetDC方法得到的显示DC创建的
无法获得显示DC的话怎能创建相应的内存DC呢?
linwendong1982 2009-03-27
  • 打赏
  • 举报
回复
我的意思就是说CreateCompatibleDc这个函数需要输入一个源DC,现在没有源DC
一条晚起的虫 2009-03-27
  • 打赏
  • 举报
回复
//内存DC的东西不写到屏幕DC或者打印DC中,就只是放在内存中的。
一条晚起的虫 2009-03-27
  • 打赏
  • 举报
回复
//不明白什么意思......

19,468

社区成员

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

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