gpt4 book ai didi

qt - 使用 Qt 绘制 Sin(x) 的图形

转载 作者:行者123 更新时间:2023-12-03 07:16:36 27 4
gpt4 key购买 nike

我正在尝试绘制正弦图的方法。

我的小部件只期望传入一些任意数据点。我必须将这些数据点拟合到正弦曲线:

Sin(x)

到目前为止,我已经尝试了一些使用 QPainterPath 的方法.

  1. QPainterPath::lineTo - 我尝试使用此函数通过获取数据点并在它们之间创建如此多的点来绘制曲线,以使线条实际上变得平滑一些。不过,我觉得这有点过于计算密集。
  2. QPainterPath::cubicTo - 根据我从 RTFM 收集到的信息,这是最好的方法。唯一的问题是,我不确定如何将控制点绘制在能够以我想要的方式一致且以编程方式平滑曲线的位置。我无法使用此功能获得所需的结果。

经过一番谷歌搜索后,我发现了一些使用 Qwt 进行曲线绘制的论坛帖子。如果我可以使用 Qwt,那就太好了,但这不是一个选择,因为我仅限于使用 Qt。

有人有有用的反馈/建议吗?

最佳答案

我目前正在做一件非常类似的事情,绘制参数均衡器的波特扫描(一 strip 有多个扫描曲线的长线)。我这样做的方式(伪风格):

qreal yCoords[GRAPH_WIDTH];
...
QPainter Painter(this);
Painter.setRenderHint(QPainter::Antialiasing, true);
//Painter.setRenderHint(QPainter::HighQualityAntialiasing, true); //opengl specific
for(int xCoord = 0; xCoord < GRAPH_WIDTH; x++)
Path.lineTo(QPointF(xCoord, yCoord[xCoord]));
...
Painter.drawPath(Path);

调用 setRenderHint 和使用 QPointF(即两个 qreal)而不是 QPoint 绘制线条的组合> (两个 int) 使线条非常平滑。

我们在运行 Ubuntu 的 SBC 上使用它,对于 600x300px 的图形,重绘时间(包括首先获得点的所有复杂数学)约为 80 毫秒。初步测试表明enabling opengl rendering将其减少到约 8 毫秒(显然,处理器密集型任务是使用抗锯齿进行绘画),因此,如果您能做到这一点,我认为该解决方案将适合您。

关于qt - 使用 Qt 绘制 Sin(x) 的图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6921520/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com