看完这篇,你也可以画出有趣的动态曲线

21 篇文章 2 订阅 ¥19.90 ¥99.00

前言

前面我们用了几篇文章了解 Paint 类的使用,有兴趣的了解的可以看一下下面的文章,我们现在来了解一下 Path 类的一些特性。Path 类用于描述绘制路径,可以实现绘制线段、曲线、自定义形状等功能。本篇我们介绍 Path 的一个描述类 PathMetric 的应用。通过本篇你会了解以下两方面的内容:

  • PathMetric 类简介。
  • PathMetric 的应用。

PathMetric 简介

PathMetric 是一个用于测量 Path 和抽取子路径(sub-paths) 的工具,通过 Path 类的 computeMetrics方法可以返回一组PathMetric 类。为什么是一组,而不是一个呢?这是因为 Path 可能包含多个不连续的子路径,比如通过 moveTo 可以重新开启新的一段路径。
通过 PathMetric 可以获取到 Path 的长度,路径是否闭合,以及某一段路径是否是 Path的子路径。PathMetrics 是一个迭代器,因此在不获取其中的 PathMetric 对象时,并不会实际进行 Path 的相关计算,这样可以提高效率。另外需要注意的是,通过 computeMetrics 方法计算得到的是一个当

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用PyQt5可以很方便地动态曲线。下面是一个简单的示例代码: ```python import sys import random from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout from PyQt5.QtGui import QPainter, QColor, QPen from PyQt5.QtCore import Qt, QTimer class CurveWidget(QWidget): def __init__(self): super().__init__() self.data = [] # 保存曲线数据的列表 self.timer = QTimer(self) self.timer.timeout.connect(self.update_data) self.timer.start(100) # 每隔100ms更新一次数据 def paintEvent(self, event): painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) # 抗锯齿 painter.fillRect(self.rect(), Qt.white) # 填充白色背景 pen = QPen(QColor(0, 0, 255)) # 设置笔颜色为蓝色 pen.setWidth(2) # 设置笔宽度为2 painter.setPen(pen) # 曲线 for i in range(len(self.data)-1): painter.drawLine(i, self.data[i], i+1, self.data[i+1]) def update_data(self): # 随机生成曲线数据 self.data.append(random.randint(0, self.height())) if len(self.data) > self.width(): self.data = self.data[-self.width():] # 保持数据长度和窗口宽度一致 self.update() class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("动态曲线") self.resize(400, 300) self.central_widget = QWidget(self) self.setCentralWidget(self.central_widget) layout = QVBoxLayout() self.plot_widget = CurveWidget() layout.addWidget(self.plot_widget) self.central_widget.setLayout(layout) if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 以上代码中,我们使用了一个`CurveWidget`类来绘制动态曲线。在`paintEvent`方法中,我们使用`QPainter`类来绘制曲线,先设置了笔的颜色和宽度,然后通过`drawLine`方法逐个连接曲线上的点。 在`update_data`方法中,我们每隔100毫秒随机生成一个新的曲线数据,并将其添加到数据列表中。如果数据列表的长度超过了窗口的宽度,则从列表的开头开始删除数据,以保持数据长度和窗口宽度一致。然后通过调用`update`方法来触发窗口的`paintEvent`方法更新绘图。 最后,在`MainWindow`类中创建了一个基于`CurveWidget`的主窗口,并启动了应用程序的事件循环。运行代码后,你将看到一个具有随机动态变化的曲线的窗口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岛上码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值