基础图形绘制
来源:互联网 发布:淘宝上怎么添加旺旺 编辑:程序博客网 时间:2024/05/22 15:06
QPainter(Qt中的画家):能够绘制各种图形,拥有绘图所需的画笔(QPen),画刷(QBrush),字体(QFont)
QPaintDevice(Qt中的画布):QPainter的绘图板,所有的QWidget类都继承自QPaintDevice
重要规则:
只能在QWidget::paintEvent中绘制图形
void paintEvent(QPaintEvent* event){ QPainter painter(this); painter.drawLine(QPoint(30,30),QPoint(100,100)); }
动态绘制图形
- 根据需要确定参数对象(绘图类型,点坐标,角度等)
- 将参数对象存入数据集合中(如:链表)
- 在paintEvent函数中遍历数据集合
根据参数对象绘制图形(update())
QPainter使用逻辑坐标系绘制图形
- 逻辑坐标系中图形的大小和位置经由转换后绘制与具体设备
- 默认情况下的逻辑坐标系与物理坐标系完全一致
视口:物理坐标系中一个任意指定的矩形
窗口:逻辑坐标系下对应到物理坐标系中的相同矩形
正弦波形绘图实例
- 定义视口矩形和逻辑坐标系
- 定义画笔并填充窗口底色
- 根据实际问题中的波形函数绘图(drawPoint())
QPainter使用逻辑坐标系进行绘图
逻辑坐标系能够变换到物理坐标系
视口与窗口指不同坐标系下的同一个矩形
窗口用于逻辑坐标系下的图形绘制
视口用于实际物理设备上的图形显示
自由绘图解决方案
- 以鼠标按下为开始,记录开始坐标
- mousePressEvent
- 记录鼠标移动时经过的像素坐标
- mouseMoveEvent
- 以鼠标释放为结束,记录结束坐标
- mouseReleaseEvent
- 按照记录顺序在两两坐标之间绘制直线
- paintEvent
如何实现基础图形动态绘制
分析:基础图形的目标是固定的,但是开始点与结束点的不同会导致最终形状的差异;因此,鼠标移动时根据当前坐标实时绘图,鼠标松开时确定最终图形
基本图形绘制需要在鼠标按下并移动时进行动态绘图,但是,无论何时都只需要记录两个坐标值
基础图形绘制解决方案
- 以鼠标按下为开始,记录开始坐标
- mousePressEvent
- 记录鼠标移动时经过的每个坐标作为临时结束坐标
- mouseMoveEvent
- 以鼠标释放为结束,记录最终结束坐标
- mouseReleaseEvent
- 在开始坐标和结束坐标之间绘制目标图形
- paintEvent
阅读全文
0 0
- css基础图形绘制
- Canvas绘制基础图形
- 基础图形绘制
- OpenGL--绘制基础图形
- Android图形绘制基础(二)
- Android图形绘制基础(一)
- Canvas基础图形的绘制
- QT基础图形的绘制
- QT5基础图形的绘制
- C#学习笔记 :图形绘制基础
- flash 绘图API:绘制基础的图形
- OpenGL 基础图形绘制与投影变换
- OpenGL 基础图形绘制与投影变换 .
- [学习笔记]JavaScript基础--图形绘制
- html5 新元素 canvas 绘制基础图形
- OpenGL 基础图形绘制与投影变换
- Android中绘制2D图形基础
- LearnOpenGL学习笔记2:绘制基础图形
- Makefile---简介
- 数据库分区表
- leetcode 3.Longest Substring Without Repeating Characters
- 短信监听器
- tensorflow android 关键词 激活
- 基础图形绘制
- [Python] Mac OS 下 os.startfile 的替代方案
- 【安卓学习笔记】JAVA基础Lesson8-函数的复写与super用法
- django rest framework使用django-filter
- 图解电容充放电
- 当前时代信息收集技巧初步总结
- 移动端 滑屏
- 两小时一个Java小项目---TelBook
- 仿真软件Udacity Self-Driving Car Simulator