qt学习之个人画板的实现(3)
来源:互联网 发布:开淘宝店的银行卡 编辑:程序博客网 时间:2024/05/20 05:25
昨晚又体验了一下双缓冲画图,我们来了解一下双缓冲在这里的作用(但今天的例子也只是实现了其中的第2点解决重影的问题,其他的大家可以自己学习,主要是理清方法)
如果不使用双缓冲绘图,会有以下几个问题:
(1)画布放大后,滚动条不跟着放大。
(2)绘制直线,矩形等图形时有重影。
如图:
(3)画布进行放大,旋转等操作后无法正常绘图。
应用坐标系的知识,在绘制图片时,当进行放大、拉伸等操作时,要改变相应的坐标值。具体过程参见相关资料,这里不作赘述。
利用两个QImage对象,一个保存临时图像,一个保存最终图像,这样实现交互绘图的方法就叫做双缓冲绘图。
接下来看一下目前的画图板的实现效果:
可以看到我在基于上次的实现的基础上添加了,处理几种特殊图形的方法。而这里要注意的便有两点:1、信号与槽机制的理解,2、双缓冲的使用。
注意图中左侧的画图工具框实质是一种叫做Dock的窗口,它与其它窗口的不同就是它可以在其父窗口中浮动,也可以停靠在父窗口的边界,就像一个工具栏一样。
大家可以
#include<QDockWidget>//调用
也可以直接通过desiner实现,具体的可以参阅帮助学习,此处不作赘述。
首先先上代码:
Mainwindow.h
Mainwindow.cpppaintwidget.h
paintwidget.cpp
对于几个图标的添加我附下图:
在工程下新建一个资源文件,文件名自拟。之后会转到下图:
先点击添加前缀,选定/image,在添加文件,注意使用.png格式的图标,把它们放在你的工程所在文件夹里,不是debug文件夹。
注意使用图标时的对应关系,这也是信号与槽机制在使用时最要注意的。对应错了自然达不到效果。
之后,如果要新加入资源文件,我们右键选定images.qrc,选择打开编辑器又会会到上面的图中,方法不变。
0 0
- qt学习之个人画板的实现(3)
- qt学习之对个人画板的实现(1)
- qt学习之个人画板的实现(2)
- qt学习之个人画板的实现(4)
- QT学习之路(5):一个简易画板的实现
- Qt学习之路(31): 一个简易画板的实现(QWidget)
- Qt学习之路(32): 一个简易画板的实现(Graphics View)
- Qt学习之路(31): 一个简易画板的实现(QWidget)
- Qt学习之路(32): 一个简易画板的实现(Graphics View)
- Qt学习之路(31): 一个简易画板的实现(QWidget)
- Qt学习之路(31): 一个简易画板的实现(QWidget)
- Qt学习之路(32): 一个简易画板的实现(Graphics View)
- Qt学习之路(32): 一个简易画板的实现(Graphics View)
- Qt学习之路-简易画板3(双缓冲绘图)
- Qt学习之路-简易画板1
- Part 05 简易画板的实现(Qt)[2012.02.13]
- QT 画板的设计
- Qt学习之路-简易画板2(自由涂鸦)
- svn由于目标计算机积极拒绝 无法连接
- Nutch1.7学习笔记2:基本工作流程分析
- 配置h2数据库
- svn checksum mismatch解决办法之一
- ios 学习总结之动画
- qt学习之个人画板的实现(3)
- Nutch1.7学习笔记3:Injector源代码分析
- POJ - 2965 - The Pilots Brothers' refrigerator (高效贪心!!)
- 使用高德地图时工程配置
- cvSetCaptureProperty
- Nutch1.7学习笔记4:Generator源代码分析
- Listener与Adapter比较区别
- wget 的用法详解
- 云计算的本质是服务