CreateCompatibleDC用法
来源:互联网 发布:双反相机知乎 编辑:程序博客网 时间:2024/05/21 14:59
CreateCompatibleDC
Creates a memory device context that is compatible with the device specified by pDC.
假如需要对屏幕进行比较多的gdi函数操作,如果每一步操作都直接对屏幕dc进行操作,那出现的大多数可能性都是屏幕的闪烁。一个很好的解决方法就是使用内存dc,将这些操作全部先在内存dc上操作,然后依次性在屏幕上进行操作。
例如:如果你单单使用bitblt在屏幕上拷贝一个图,那可以直接使用屏幕的dc。但是如果你要先设置背景(fillrect)然后再bitblt的话,这就涉及到两个屏幕dc的操作,这样的话屏幕很容易闪烁。
void CBounceWnd::OnTimer(UINT_PTR /* wParam */)
{
if (m_bmBall.m_hObject == NULL)
return; // no bitmap for the ball
CRect rcClient;
GetClientRect(rcClient);
CClientDC dc(this);
CBitmap* pbmOld = NULL;
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
pbmOld = dcMem.SelectObject(&m_bmBall);
dc.BitBlt(m_ptCenter.x - m_sizeTotal.cx / 2,
m_ptCenter.y - m_sizeTotal.cy / 2,
m_sizeTotal.cx, m_sizeTotal.cy,
&dcMem, 0, 0, SRCCOPY);
m_ptCenter += m_sizeMove;
if ((m_ptCenter.x + m_sizeRadius.cx >= rcClient.right) ||
(m_ptCenter.x - m_sizeRadius.cx <= 0))
{
m_sizeMove.cx = -m_sizeMove.cx;
}
if ((m_ptCenter.y + m_sizeRadius.cy >= rcClient.bottom) ||
(m_ptCenter.y - m_sizeRadius.cy <= 0))
{
m_sizeMove.cy = -m_sizeMove.cy;
}
dcMem.SelectObject(pbmOld);
dcMem.DeleteDC();
}
- CreateCompatibleDC用法
- CreateCompatibleDC用法
- CreateCompatibleDC
- CreateCompatibleDC
- CreateCompatibleDC
- CreateCompatibleDC
- CreateCompatibleDC
- CreateCompatibleDC
- CreateCompatibleDC
- CreateCompatibleDC
- CreateCompatibleDC
- CreateCompatibleDC
- CreateCompatibleDC
- CreateCompatibleDC
- CreateCompatibleDC
- CDC::CreateCompatibleDC
- CDC::CreateCompatibleDC
- CreateCompatibleDC 解释
- Android Native C 之 Helloworld的四种编译方式_转载
- 智慧书-永恒的处世经典格言:41-80
- int与CString,char*与CString,float与CString之间的相互转化
- Asp.net下获取HyperLinkField值的问题
- 站内信设计思路
- CreateCompatibleDC用法
- Linux服务器的安全
- C++求未知个数的数字的和
- 进入黑马day1-XML简单学习
- Linux的mount命令详解
- TO BE A BETTER MAN(纪念时光)
- Axis客户端调用Webservice_hanCSDN_20130225
- 用非递归的方法遍历二叉树
- struts2中改变struts.xml默认路径