CreateCompatibleDC用法
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 Creates a memory device context that is compatible with the device specified by p ...
- Win32 API CreateCompatibleDC 函数的相关应用
关于 CreateCompatibleDC 函数的用法的说明如下: Windows不允许程序员直接访问硬件,它对屏幕的操作是通过环境设备,也就是DC来完成的.屏幕上的每一个窗口都对应一个DC,可以把D ...
- CBitMap的用法 from http://www.cnblogs.com/toconnection/archive/2012/08/04/mfc.html
CBitMap的用法 MFC提供了位图处理的基础类CBitmap,可以完成位图(bmp图像)的创建.图像数据的获取等功能.虽然功能比较少,但是在对位图进行一些简单的处理时,CBitmap类还是可以胜任 ...
- StretchBlt函数和BitBlt函数的用法
StretchBlt和BitBlt都用在双缓冲视图中,用来显示一幅图像 一.StretchBlt 函数从源矩形中复制一个位图到目标矩形,必要时按目标设备设置的模式进行图像的拉伸或压缩.也即是将内存中的 ...
- 【转】StretchBlt函数和BitBlt函数的用法
原帖地址:StretchBlt函数和BitBlt函数的用法 StretchBlt和BitBlt都用在双缓冲视图中,用来显示一幅图像 一.StretchBlt 函数从源矩形中复制一个位图到目标矩形,必要 ...
- BitBlt函数用法
BitBlt函数用法 2010-03-05 10:25:51| 分类: VC学习|举报|字号订阅 下载LOFTER我的照片书 | (一) BOOL BitBlt( int x, int y, in ...
- c语言中external,static关键字用法
static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...
- Pandas_transform的用法
先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...
- Python中yield和yield from的用法
yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...
最新文章
- 全栈Python Flask教程-建立社交网络
- 任务简介(Query Performance Prediction)
- 电子称重管理计算机,称重管理系统
- Android app被系统kill的场景
- postman安装报错 无法定位_VS2010 + winxp 无法定位程序输入点GetTickCount64 在动态链接库kernel32.dll上 错误...
- 专业音频如何把电平转换成dbu_这是我见过最细致的音频系统增益设置指南,跟着学起来!...
- 百度笔试题:malloc/free与new/delete的区别
- Docker(二)基本操作命令
- [Abp vNext 源码分析] - 4. 工作单元
- 一图看懂云栖大会「云原生」发布
- 信用卡还款直减500
- VMware虚拟机克隆CentOS6.5后修改网卡
- 周鸿祎卸任奇安信董事 后者具备上市条件
- 微软Azure Services Bus中的工作流
- python子类调用父类构造函数_Java 子类调用父类的构造函数
- ResNet网络结构详解及代码复现
- 机器学习——训练模型
- oracle软件 乱码,oracle 中文乱码解决办法
- Django搭建后台管理系统
- eog - eog:19220): GLib-GIO-ERROR **: Settings schema ‘org.gnome.eog.plugins‘ is not installed