我用bitblt在屏幕上显示了一幅图,完了怎么把它删了,用什么函数?
谢谢
谢谢
解决方案 »
- 对话框的成员函数里创建一个与指定设备兼容的内存设备上下文环境(DC)//怎么内存错误?
- 重名宏的问题
- 如何用wininet api实现ftp客户端上传的功能阿
- 求邮件体分析方法!!
- 请问:怎样在服务程序里取登录用户的用户名?
- 我怎么样看一个工程里面的makefile文件
- 请教各位大虾:如何去掉CHtmlView的WS_BORDER属性
- CTreeCtrl 的问题。帮帮忙!!
- 有关const
- 使用MFC单文档拆分views后,对每个view使用OpenGL库函数进行三维场景draw时 绘图时间越来越长
- 怎样实现带下拉框和复选框的CListCtrl
- 在win32平台工程里,做一个弹出窗口,要求窗口不“自动全屏”,我实在找不出好办法?求求真心的你
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(pBitmap);
pDC->Bitblt(0,0, rc.Width(),rc.Height(), &memDC, 0, 0, SRCCOPY);
HDC hMem = ::CreateCompatibleDC(hDC);
::SelectObject(hBitmap);
::Bitblt(hDC, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top,hMem, 0, 0, SRCCOPY);
::GetCursorPos(&pdest);
POINT psrc;
psrc.x = psrc.y = 0;
SIZE size;
size.cx = width;
size.cy = height;
HDC hdcdest = ::GetDC(NULL);
HDC hdcsrc = CreateCompatibleDC(hdcdest);
::SelectObject(hdcsrc, hbitmap);
::BitBlt(hdcdest, pdest.x, pdest.y, width, height, hdcsrc, 0, 0, SRCCOPY);
::Sleep(200); HBITMAP hbitmap2 = NULL;
::SelectObject(hdcdest, hbitmap2);
::BitBlt(hdcdest, pdest.x, pdest.y, width, height, hdcsrc, 0, 0, SRCCOPY); ::DeleteDC(hdcsrc);
::ReleaseDC(NULL, hdcdest);能不能帮我再看看,谢谢!
::GetCursorPos(&pdest);
POINT psrc;
psrc.x = psrc.y = 0;
SIZE size;
size.cx = width;
size.cy = height;
HDC hdcdest = ::GetDC(NULL);
HDC hdcsrc = CreateCompatibleDC(hdcdest);
::SelectObject(hdcsrc, hbitmap);
::BitBlt(hdcdest, pdest.x, pdest.y, width, height, hdcsrc, 0, 0, SRCCOPY);
::Sleep(200); //你是要删除上一次绘图的痕迹吧
//加入下面一句,最后一个参数如果用BLACKNESS表示用黑色,WHITENESS表示白色
::BitBlt(hdcdest, pdest.x, pdest.y, width, height, NULL, 0, 0, BLACKNESS); HBITMAP hbitmap2 = NULL;
::SelectObject(hdcdest, hbitmap2);
::BitBlt(hdcdest, pdest.x, pdest.y, width, height, hdcsrc, 0, 0, SRCCOPY); ::DeleteDC(hdcsrc);
::ReleaseDC(NULL, hdcdest);
我想你是要清除上一次绘图的痕迹,不然绘了又清除,没什么意义啊.
POINT pdest;
::GetCursorPos(&pdest);
POINT psrc;
psrc.x = psrc.y = 0;
SIZE size;
size.cx = width;
size.cy = height;
HDC hdcdest = ::GetDC(NULL);
HDC hdcsrc = CreateCompatibleDC(hdcdest);
::SelectObject(hdcsrc, hbitmap);
::BitBlt(hdcdest, pdest.x, pdest.y, width, height, hdcsrc, 0, 0, SRCCOPY);
::Sleep(200); //HBITMAP hbitmap2 = NULL;
// ::SelectObject(hdcdest, hbitmap2);
// ::BitBlt(hdcdest, pdest.x, pdest.y, width, height, hdcsrc, 0, 0, SRCCOPY);
::BitBlt(hdcdest, pdest.x, pdest.y, bm.bmWidth, bm.bmHeight, hdcsrc, 0,0,WHITENESS);
::DeleteDC(hdcsrc);
::ReleaseDC(NULL, hdcdest);
还是用这个吧
最后再发送一条 UpdateWindow 消息来通知桌面更新!
你也够狠的,直接在桌面画图,如果你照上面几楼说的办,那你看看你的桌面背景会变成什么样!
要不你就建立一个全局的内存 DC,每次画图后就把画好的内容复制一份到这个 DC 上!
如果需要恢复桌面内容(或者说上一次画的内容),把 DC 上的内容重新复制回去就行了。