使用时,将包括#define DATALEN 10000的语句以及整个类、全局变量scrbuf的定义都拷贝到你的代码文件中。
默认不开启双缓冲。

  • 调用scrbuf.on()开始双缓冲模式
  • 此模式下,输出文字不会立即显示在屏幕上。
    需要手动调用scrbuf.update()刚才输入的内容(包括system(“cls”)操作)才会显示在屏幕上。
  • 调用scrbuf.off()关闭双缓冲模式
#include<bits/stdc++.h>
#include<Windows.h>
using namespace std;
#define DATALEN 10000
class ScreenBuff{public:HANDLE hOutput;HANDLE hOutBuf;COORD coord={0,0};DWORD bytes;bool isOn;char data[DATALEN];ScreenBuff(){bytes = 0;hOutput=GetStdHandle(STD_OUTPUT_HANDLE);hOutBuf = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);CONSOLE_CURSOR_INFO cci;cci.bVisible=0;cci.dwSize=1;SetConsoleCursorInfo(hOutput, &cci);SetConsoleCursorInfo(hOutBuf, &cci);}void on(){//开启双缓冲后,在输出后必须调用update才能显示 isOn = true;SetConsoleActiveScreenBuffer(hOutBuf);}void off(){//关闭双缓冲 isOn = false;SetConsoleActiveScreenBuffer(hOutput);}void update(){//更新屏幕 if(isOn){ReadConsoleOutputCharacterA(hOutput, data, DATALEN, coord, &bytes);WriteConsoleOutputCharacterA(hOutBuf, data, DATALEN, coord, &bytes);}}
}scrbuf;
int main()
{scrbuf.on();while (1){for (char c='a'; c<'z'; c++){system("cls");for (int i=0; i<800; i++){printf("%c",c);}scrbuf.update();}}scrbuf.off();return 0;
}

控制台双缓冲防闪烁--功能封装相关推荐

  1. Qt组件中的双缓冲无闪烁绘图

    双缓冲绘图 在Qt4中,所有的窗口部件默认都使用双缓冲进行绘图.使用双缓冲,可以减轻绘制的闪烁感.在有些情况下,用户要关闭双缓冲,自己管理绘图.下面的语句设置了窗口部件的Qt::WA_PaintOnS ...

  2. java 坦克重叠_【Java】我所知道坦克大战(单机版)之画出坦克的实心圆、让圆动起来、双缓冲解决闪烁问题...

    28640发布于 今天 02:47 本篇文章目的 画出坦克的实心圆 让坦克圆动起来 双缓冲解决闪烁问题 一.画出代表坦克的实心圆 我们需要画出一个圆,那么可以使用fillOval方法 fillOval ...

  3. C++零食:WTL中使用双缓冲避免闪烁

    双缓冲的原理可以这样形象的理解:把电脑屏幕看作一块黑板.首先我们在内存环境中建立一个"虚拟"的黑板,然后在这块黑板上绘制复杂的图形,等图形全部绘制完毕的时候,再一次性的把内存中绘制 ...

  4. Linux framebuffer双缓冲防止闪烁

    昨天写了一篇文章: 使用Linux Framebuffer绘制32位真彩图形: https://blog.csdn.net/dog250/article/details/90113737 并发了朋友圈 ...

  5. directx 双缓冲 运动 闪烁_24期0利率 | BMW超值福袋开启“双11”购车狂欢节!!

    BMW超值福袋开启"双11"购车狂欢节 24期0利率 首付一半开宝马 又到一年"双11",华晨宝马以十足的诚意,携新BMW X1.创新BMW X2以及BMW 1 ...

  6. java闪烁_java双缓冲解决屏幕闪烁

    今天做实验,发现了屏幕闪烁问题,网上找到解决方法,在此谢谢原作者 转自http://blog.sina.com.cn/s/blog_611ca6300100ezfx.html Java的强大特性让其在 ...

  7. EGE基础入门篇(九):双缓冲与手动渲染

    EGE专栏:EGE专栏 上一篇:EGE基础入门篇(八):清屏与重绘 下一篇: 文章目录 一.双缓冲机制 1. 单缓冲绘图 1.1 单缓冲绘图的缺点 1.2 系统读取帧缓冲 2. 双缓冲绘图 2.1 双 ...

  8. MFC绘制动态曲线,用双缓冲绘图技术防闪烁

    转载自:ZHY_ongu的博客:MFC绘制动态曲线,用双缓冲绘图技术防闪烁 先上效果图    随着时间的推移,曲线向右平移,同时X轴的时间坐标跟着更新. 一.如何绘制动态曲线. 所谓动画,都是一帧一帧 ...

  9. [转载] MFC绘制动态曲线,用双缓冲绘图技术防闪烁

    转载的原文地址 先上效果图 随着时间的推移,曲线向右平移,同时X轴的时间坐标跟着更新. 一.如何绘制动态曲线 所谓动画,都是一帧一帧的图像连续呈现在用户面前形成的.所以如果你掌握了如何绘制静态曲线,那 ...

最新文章

  1. Java 常用类 -Arrays
  2. high speed train is awesome
  3. localsandbox 如何响应tile点击事件
  4. 什么是“GB/T ”? 计算机术语你又知道多少? 想不想别人听不懂的语言搞定别人!...
  5. NSD cisco高级路由与交换技术--2014.8.16
  6. es5创建对象与继承
  7. 北京户口 - 百度百科
  8. Java 基本数据类型存储位置
  9. U盘强制格式化的解决方案
  10. 联想笔记本BIOS设置中文详解
  11. ad怎么批量改元器件封装_ad中如何批量修改封装
  12. iOS之UITableViewController的使用
  13. leetcode报错reached end of file while parsing
  14. 微信调支付宝支付常见问题
  15. R语言学习笔记之str函数
  16. python-igraph创建网络(图)
  17. 互联网金融概念股龙头有哪些
  18. 详谈NVMe over Fabric技术发展简史
  19. Android图片海报制作-自定义文字排版控件组件
  20. C语言 结构体数组复制

热门文章

  1. 《软件工程概论》第四章核心内容
  2. PHP数组的详细解读
  3. webservice 心得
  4. Django源代码阅读分析-2:持久层结构分析
  5. 学Python半年,56岁的潘叔叔晒出99分成绩单,你呢?
  6. 重磅盘点!过去一年里最受欢迎的技术干货,全在这里了
  7. STM32分散加载文件
  8. 15 张图, 把TCP/IP 讲得一清二楚!
  9. 从0开始搭建公司后台技术栈,这套架构值得拥有...
  10. 免费直播| TDD如何颠覆了我对开发的认知?