Qt之旅---10 双缓冲绘图
1 基本知识
但我们使用painter进行快速绘图时会看到类似图下 的情况
双缓冲绘图技术 的原理 用两个画布进行绘图,一个用于显示,一个用于绘制,也就是将图画之后再显示
就可以避免上面的情况。
2 源码
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
isDrawing=false;
//重设窗口大小
resize(600,500);
//设置画布大小
pix=QPixmap(200,200);
pix.fill(Qt::white);
isDrawing=false;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::paintEvent(QPaintEvent *){
int x,y,h,w;
x=lastpoint.x();
y=lastpoint.y();
w=endtpoint.x()-x;
h=endtpoint.y()-y;
//绘图设备
QPainter pait(this);
if(isDrawing)
{
//将pix 复制到 tmpPix(补助画布)中 保存让以前 的画不消失
tmpPix=pix;
QPainter pp(&tmpPix);
pp.drawRect(x,y,w,h);
pait.drawPixmap(0,0,tmpPix);
}
else{
QPainter pp(&pix);
pp.drawRect(x,y,w,h);
pait.drawPixmap(0,0,pix);
}
}
void MainWindow::mousePressEvent(QMouseEvent *event){
if(event->button()==Qt::LeftButton){
lastpoint==event->pos();
isDrawing=true;
update();
}
}
void MainWindow::mouseReleaseEvent(QMouseEvent *event){
if(event->button()==Qt::LeftButton)
{
endtpoint=event->pos();
isDrawing=false;
update();
}
}
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons()==Qt::LeftButton)
{
endtpoint=event->pos();
update();
}
}
Demo22 地址:https://gitee.com/codemaner/qt_learning_record/tree/master
转载于:https://my.oschina.net/u/3768017/blog/1822857
Qt之旅---10 双缓冲绘图相关推荐
- [Qt教程] 第18篇 2D绘图(八)双缓冲绘图
[Qt教程] 第18篇 2D绘图(八)双缓冲绘图 楼主 发表于 2013-5-2 22:07:23 | 查看: 789| 回复: 1 双缓冲绘图 版权声明 该文章原创于Qter开源社区(www.qt ...
- Qt组件中的双缓冲无闪烁绘图
双缓冲绘图 在Qt4中,所有的窗口部件默认都使用双缓冲进行绘图.使用双缓冲,可以减轻绘制的闪烁感.在有些情况下,用户要关闭双缓冲,自己管理绘图.下面的语句设置了窗口部件的Qt::WA_PaintOnS ...
- 【Qt】2D绘图之双缓冲绘图
00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 绘制矩形 04. 双缓冲绘图 05. 附录 01. 概述 所谓的双缓冲绘图的概念.双缓冲(double-buffers)绘 ...
- 【QT】QT从零入门教程(十三):QT画笔工具QPainter (双缓冲绘图)
QPainter 用于执行绘图操作,其提供的 API 在 GUI 或 QImage.QOpenGLPaintDevice.QWidget 和QPaintDevice 显示图形(线.形状.渐变等). ...
- MFC绘制动态曲线,用双缓冲绘图技术防闪烁
转载自:ZHY_ongu的博客:MFC绘制动态曲线,用双缓冲绘图技术防闪烁 先上效果图 随着时间的推移,曲线向右平移,同时X轴的时间坐标跟着更新. 一.如何绘制动态曲线. 所谓动画,都是一帧一帧 ...
- VC中的双缓冲绘图技术
之前在做图形绘制的时候,发现在拖动图形时候,会出现闪烁的情况,后来就上网找了一下双缓冲绘图,本文非原创,只是想保存下来,以后要用的时候不用再到处去搜,也希望能帮助有这方面困惑的朋友 原文来自http: ...
- android双缓冲绘图技术分析
转载请说明出处:http://www.jianshu.com/p/efc0bebfd22e 双缓冲.多缓冲技术在计算机科学中其实是一个广义的概念,不过其本质上的意思都是差不多的.今天我们就来讲一讲双缓 ...
- c语言双缓冲怎么用,C语言游戏编程:GDI怎么实现双缓冲绘图去掉闪烁
在上篇文章中将我要用 C语言重新写一个俄罗斯方块 ,使用的是GDI的绘图模式(目前正在移植到DX上去,想添加一些更好友好的动画).数据与动画分离,动画的帧率保持在30左右.但是绘图的时候画面出现了强烈 ...
- Cimage下实现双缓冲绘图
双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度. 双缓冲绘图的步骤: 1.在内存中创建与画布一致的 ...
最新文章
- Mac-sublime text 3破解版
- 常用工具之zabbix
- check_mk通用应用检测插件
- IIS FTP部分文件上传报错451的原因及解决方法
- 小米3g刷高格固件_小米路由器3G刷了老毛子之后恢复官方固件
- php 扩展 返回字符串,基于PHP7的PHP扩展开发之四(字符串的处理)
- linux select shell,linux之shell编程select和case用法
- Guava RateLimiter限流原理解析
- mysql binlog查看_MySQL--17 配置binlog-server 及中间件
- ZYNQ学习心得梳理(一)
- OSM获取城市路网数据及其矢量化
- 重磅!Waymo首席执行官离职,自动驾驶商业化打上“问号”
- 为什么说社群团购时代来临了?
- eNSP 路由器配置-静态路由和缺省路由
- linux 锐捷客户端 脚本,基于802.1x的锐捷linux客户端认证方法(最新)
- 后台获取前台传递参数为null和空字符串的区别,以及sql拼接之if判断
- 正则表达式(regular expression [regExp])
- html静态页面--对我的idol相关内容的集合页面(徐明浩the 8)
- 阿里云Apsara Clouder专项技能认证-实现调用API接口-学习笔记
- 揭秘!量子计算的可怕之处在哪?摩尔定律到达极限会发生什么?
热门文章
- python spss,有没有一个Python模块打开SPSS文件?
- 20221024 今天的世界发生了什么
- python获取字典长度_Python中的字典
- CV_8U CV_32F, and CV_32S
- Vue修改网页浏览器标签的标题和图标
- es的分片和副本_Elasticsearch 索引分片与副本设置技巧
- 我的第一个Chrome插件:天气预报应用
- Charles 连接 雷电模拟器(模拟器下载证书)
- 【科研绘图封面教程】C4D+PS教学绘制优秀期刊封面第一期
- nginx处理http请求