查看完整版本: [-- QT下如何绘制等高线图 --]

QTCN开发网 -> Qt基础编程 -> QT下如何绘制等高线图 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

yixinuestc 2019-09-30 10:08

QT下如何绘制等高线图

大家好,我现在用QT绘制等高线,效果示意如下,而且还有对图进行编辑(删除线,移动,拖拽)等。这方面经验不足,请大家指教,有没有适合的图形库可以用,谢谢。

[attachment=20867]





20091001753 2019-09-30 14:03
Qt 有数据可视化模块,叫 QtDataVisualization

包含与等高线有关的 Demo,就在 Qt 的安装目录下

Qt\Qt5.13.1\Examples\Qt-5.13.1\datavisualization\

[attachment=20870]

[attachment=20869]

[attachment=20871]

yixinuestc 2019-09-30 16:10
@20091001753  
多谢指点,我先研究下QT的例子,感谢!

lieber 2019-10-01 18:40
大佬们,这个QtDataVisualization里有处理点云相关的类嘛,很久之前做过一次,输入5w个点就卡成了PPT,后来虽然换了其他的开源库,但是一直觉得不好用

20091001753 2019-10-03 17:08
lieber:大佬们,这个QtDataVisualization里有处理点云相关的类嘛,很久之前做过一次,输入5w个点就卡成了PPT,后来虽然换了其他的开源库,但是一直觉得不好用 (2019-10-01 18:40) 

QtDataVisualization 有一些关于渲染质量的选项,例如阴影等等。

这就根据你的硬件情况,量力而为吧。比如索性把阴影关掉。

下面这个例子就是调整阴影质量的。
[attachment=20873]

砍猪佩琪 2019-11-06 09:36
请问你的数据是如何与颜色对应的呢,用的是什么类呀

20091001753 2019-11-06 13:45
砍猪佩琪:请问你的数据是如何与颜色对应的呢,用的是什么类呀 (2019-11-06 09:36) 

海拔 与 颜色 的映射关系,实际上是你自己定义的。
当然,你也可以参照上面叫 texturesurface 的例子,里面有一段代码:

  1. int height = 400;
    int width = 100;
    int border = 10;
    QLinearGradient gr(0, 0, 1, height - 2 * border);
    gr.setColorAt(1.0f, Qt::black);
    gr.setColorAt(0.8f, Qt::darkGreen);
    gr.setColorAt(0.6f, Qt::green);
    gr.setColorAt(0.4f, Qt::yellow);
    gr.setColorAt(0.2f, Qt::red);
    gr.setColorAt(0.0f, Qt::darkRed);

    QPixmap pm(width, height);
    pm.fill(Qt::transparent);
    QPainter pmp(&pm);
    pmp.setBrush(QBrush(gr));
    pmp.setPen(Qt::NoPen);
    pmp.drawRect(border, border, 35, height - 2 * border);
    pmp.setPen(Qt::black);
    int step = (height - 2 * border) / 5;
    for (int i = 0; i < 6; i++) {
        int yPos = i * step + border;
        pmp.drawLine(border, yPos, 55, yPos);
        pmp.drawText(60, yPos + 2, QString("%1 m").arg(550 - (i * 110)));
    }


这段代码生成的 QPixmap 即:
[attachment=21035]

alone_work 2019-11-06 14:12
  

砍猪佩琪 2019-11-06 17:11
20091001753:海拔 与 颜色 的映射关系,实际上是你自己定义的。
当然,你也可以参照上面叫 texturesurface 的例子,里面有一段代码:
int height = 400;
....... (2019-11-06 13:45) 

非常感谢!!

沉默小ai 2019-11-06 23:03
学到不少,感觉QT博大精深


查看完整版本: [-- QT下如何绘制等高线图 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled