C++ | 双缓存的使用

简介: 双缓存在paint中很重要。

1、定义内存DC: CDC memDC;
2、定义位图资源: CBitmap bitmap;
3、创建内存DC: memDC.CreateCompatibleDC(&dc);
4、创建位图资源: bitmap.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
5、选择位图资源: CBitmap *pOldBitmap = memDC.SelectObject(&bitmap);
6、双缓存输出到屏幕: dc.BitBlt(0, 0, rect.Width(),rect.Height(),&memDC, 0, 0, SRCCOPY);
7、恢复位图资源: memDC.SelectObject(pOldBitmap);
8、释放资源: bitmap.DeleteObject();memDC.DeleteDC();ReleaseDC(&memDC);
根据自己的需要可以定义为成员变量,也可以在OnPaint()中使用临时变量。

目录
相关文章
|
30天前
|
存储 缓存 算法
【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能
【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能
114 0
|
12月前
|
缓存 Java Android开发
Android C++ 系列:JNI 调用时缓存字段和方法 ID
通常我们通过 FindClass 、GetFieldID、GetMethodID 去找到对应的信息也是耗时操作,如果方法被频繁调用(特别是像音视频处理时循环的调用JNI方法传递音视频数据),每次都去查找对应的类和方法ID会很耗性能,所以我们必须将它们缓存起来,达到只创建一次,后面直接使用缓存内容的效果。
93 0
|
机器学习/深度学习 缓存 算法
C++中的数组array和vector,lambda表达式,C字符串加操作,C++中新类型数组(数组缓存),多元数组,new缓冲
 使用C++风格的数组,不需要管理内存。 array要注意不要溢出,因为它是栈上开辟内存. array适用于任何类型 #include<iostream> #include<array> #include<vector>   //C++的标准库 #include<string
1351 0
|
4天前
|
存储 编译器 C语言
c++的学习之路:5、类和对象(1)
c++的学习之路:5、类和对象(1)
19 0
|
4天前
|
C++
c++的学习之路:7、类和对象(3)
c++的学习之路:7、类和对象(3)
19 0
|
3天前
|
设计模式 Java C++
【C++高阶(八)】单例模式&特殊类的设计
【C++高阶(八)】单例模式&特殊类的设计
|
3天前
|
编译器 C++
【C++基础(八)】类和对象(下)--初始化列表,友元,匿名对象
【C++基础(八)】类和对象(下)--初始化列表,友元,匿名对象
|
7天前
|
存储 安全 C语言
【C++】string类
【C++】string类
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
9天前
|
编译器 C++
标准库中的string类(上)——“C++”
标准库中的string类(上)——“C++”