MFC中,在CView类的继承类中,调用GetDC()函数,比如绘图前通过GetDC()函数后,获取相应的窗口句柄,但这应该是个全局函数,它如何准确知道用户要获取哪一部分的屏幕区域呢?是因为在对应的CView中,通过CView对应的窗口来查找的吗?
2条回答
- qq_42835472 2018-08-14 09:21关注
对于create的dc应该予以deletedc,而对于getdc的应予以releasedc
一、 CDC *pDC = GetDC();
CPen pen(PS_SOLID, 2, RGB(0,0,255));
pDC->SelectObject(&pen);
pDC->MoveTo(10, 10);
pDC->LineTo(500, 450);
ReleaseDC(pDC);
二、
CClientDC dc(this);
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(&dc);
dcCompatible.SelectObject(&m_bitmap);
pMemDC->BitBlt(m_rcWindowRect.left, m_rcWindowRect.top, m_rcWindowRect.Width(), m_rcWindowRect.Heigh(), &dcCompatible, 0, 0, SRCCOPY);
pMemDC->StretchBlt(m_rcWindowRect.left, m_rcWindowRect.top, m_rcWindowRect.Width(), m_rcWindowRect.Height(), &dcCompatible, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
DeleteDC(dcCompatible);
三、
CPaintDC dc(this);
//CPaintDC只在OnPaint函数里有效。
HDC hDC;
CDC *pDC = m_pParentDlg->GetDC();
hDC = CreateCompatibleDC(pDC->GetSafeHdc());
HGDIOBJ hOldBmp = SelectObject(hDC, m_hbitmap);
StretchBlt(pDC->m_hDC, 535, 70, 200, 150, hDC, 0, 0, m_tuwidth, m_tuheight, SRCCOPY);
SelectObject(hDC, hOldBmp);
DeleteDC(hDC);
m_pParentDlg->ReleaseDC(pDC);wince从文件里面加载bmp格式图片:(要包含头文件ShellAPI.h)
#include HBITMAP hmap;
hmap = SHLoadDIBitmap(_T("\SDMMC\Test\kenan.bmp"));
CDC dcCompatible; dcCompatible.CreateCompatibleDC(pMemDC);
SelectObject(dcCompatible, hmap);
BitBlt(pMemDC->m_hDC, m_rcWindowRect.left, m_rcWindowRect.top, m_rcWindowRect.Width(), m_rcWindowRect.Height(), dcCompatible, 0, 0, SRCCOPY);
DeleteDC(dcCompatible)本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥40 复杂的限制性的商函数处理
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码