当前位置: 首页 > news >正文

QT图形显示和处理4

QT还可以使用2D画图功能来显示图像,绘制文字,实现绘制路径,也可以显示gif图像,就是所谓的动画效果。这些因为和我们最后要实现的东西关系也不是很大,所以就不详细讲述了。在这里简单再说一下双缓冲机制:

双缓冲就是设置两个缓冲区,先在一个上画,画好以后直接传给另一个,然后另一个负责显示。在Opengl中,双缓冲是这样:先把内容画在一个缓冲区上,然后两个缓冲区进行交换,然后再画另一个缓冲区,然后两者再次交换。这样的好处是防止出现屏幕闪现的现象。如果用老版本的GLUT来作画,不使用双缓冲的话就会屏幕一闪一闪的,因为它需要交替显示,先清空屏幕,然后再一点一点往上面画,这就会造成很不好的视觉效果。

但是经过我的测试,Qt上的画图功能貌似不太会出现闪屏?查了查官方资料,大概是说它内部进行了优化,所以就算不自己设置双缓冲也没有什么问题。——总之,既然他们在底层替我们帮忙了,我们就偷一下懒吧,反正双缓冲也不是什么复杂的玩意,大家有需要去自己看看就可以写了,别的博客应该也有很多。

再陈述一下什么是重绘事件。如果你把窗口进行了拉伸,隐藏然后再显示,调用update函数之类的行为的时候,重绘事件就会把里面画的内容根据新的规则(比如用width()和height()指定的新的屏幕长宽比例)重新再画一遍。

再说一下这两个函数:

mc.setBackgroundRole(QPalette::Dark);
mc.setAutoFillBackground(true);

它可以用来设置控件的背景色,在重绘的时候也会生效,效果如下:

好像这一节内容有点少了。。。。

emmmmmmmm。。。。。。毕竟我是想实现关于QT绘制的学习体系的,每章节内容太少也不太好,emmmmmmm。。。。。。

还是讲讲绘制文字吧。。。。

    QPainter painter(this);
	QRectF rect(20.0,20.0,600.0,400.0);
	painter.setPen(Qt::red);
	painter.drawRect(rect);
	painter.setPen(Qt::blue);
	painter.drawText(20,410,tr("1"));
	painter.drawText(30, 410, tr("2"));
	painter.drawText(40, 410, tr("3"));
	painter.drawText(50, 410, tr("4"));
	painter.drawText(60, 410, tr("5"));
	painter.drawText(70, 410, tr("6"));
	painter.drawText(80, 410, tr("7"));
	painter.drawText(90, 410, tr("8"));
	painter.drawText(100, 410, tr("8"));
	painter.drawText(110, 410, tr("8"));
	painter.drawText(120, 410, tr("8"));
	painter.drawText(rect, Qt::AlignHCenter, tr("I am a title !"));

显示效果如下:

以后我们会需要用到这个来实现坐标轴。

下一节将开始介绍图元,场景和视景等系统,这将是我们实现我们要设计的内容的根本所在。

 

 

 

相关文章:

  • QT图形显示和处理5
  • QT图形显示和处理6
  • QT图形显示和处理7
  • QT图形显示和处理8
  • QT传输函数控件设计1 引子
  • QT传输函数控件设计2 体渲染和VTK
  • QT传输函数控件设计3 QVTKWidget和QT图形界面的融合
  • QT传输函数控件设计4 接着进行融合
  • QT传输函数控件设计5 显示体渲染效果
  • QT传输函数控件设计6 设计Dock窗体结构
  • QT传输函数控件设计7 边界和布局规划
  • QT传输函数控件设计8 设计小圆点
  • QT传输函数控件设计9 初步设计视口类
  • QT传输函数控件设计10 包含小圆点的图形项
  • QT传输函数控件设计11 包含小圆点的图形项2
  • 深入了解以太坊
  • SegmentFault for Android 3.0 发布
  • classpath对获取配置文件的影响
  • Fastjson的基本使用方法大全
  • JavaScript设计模式与开发实践系列之策略模式
  • MySQL数据库运维之数据恢复
  • Vue2 SSR 的优化之旅
  • 从零开始学习部署
  • 高度不固定时垂直居中
  • 聊聊redis的数据结构的应用
  • 模型微调
  • 通过npm或yarn自动生成vue组件
  • 王永庆:技术创新改变教育未来
  • 小程序button引导用户授权
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 应用生命周期终极 DevOps 工具包
  • C# - 为值类型重定义相等性
  • # Panda3d 碰撞检测系统介绍
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • ###C语言程序设计-----C语言学习(6)#
  • #前后端分离# 头条发布系统
  • $refs 、$nextTic、动态组件、name的使用
  • (AngularJS)Angular 控制器之间通信初探
  • (JS基础)String 类型
  • (八)c52学习之旅-中断实验
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (一)appium-desktop定位元素原理
  • (轉貼) UML中文FAQ (OO) (UML)
  • . NET自动找可写目录
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .Net 8.0 新的变化
  • .Net Core和.Net Standard直观理解
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET Remoting学习笔记(三)信道
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)