• 7974阅读
  • 9回复

[提问]QT下如何绘制等高线图 [复制链接]

上一主题 下一主题
离线yixinuestc
 

只看楼主 倒序阅读 楼主  发表于: 2019-09-30
大家好,我现在用QT绘制等高线,效果示意如下,而且还有对图进行编辑(删除线,移动,拖拽)等。这方面经验不足,请大家指教,有没有适合的图形库可以用,谢谢。






在线20091001753

只看该作者 1楼 发表于: 2019-09-30
Qt 有数据可视化模块,叫 QtDataVisualization

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

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





(づ ̄ 3 ̄)づ
离线yixinuestc

只看该作者 2楼 发表于: 2019-09-30
@20091001753  
多谢指点,我先研究下QT的例子,感谢!
本帖提到的人: @20091001753
离线lieber

只看该作者 3楼 发表于: 2019-10-01
大佬们,这个QtDataVisualization里有处理点云相关的类嘛,很久之前做过一次,输入5w个点就卡成了PPT,后来虽然换了其他的开源库,但是一直觉得不好用
在线20091001753

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

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

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

下面这个例子就是调整阴影质量的。
(づ ̄ 3 ̄)づ
离线砍猪佩琪

只看该作者 5楼 发表于: 2019-11-06
请问你的数据是如何与颜色对应的呢,用的是什么类呀
在线20091001753

只看该作者 6楼 发表于: 2019-11-06
回 砍猪佩琪 的帖子
砍猪佩琪:请问你的数据是如何与颜色对应的呢,用的是什么类呀 (2019-11-06 09:36) 

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

  1. int height = 400;
  2. int width = 100;
  3. int border = 10;
  4. QLinearGradient gr(0, 0, 1, height - 2 * border);
  5. gr.setColorAt(1.0f, Qt::black);
  6. gr.setColorAt(0.8f, Qt::darkGreen);
  7. gr.setColorAt(0.6f, Qt::green);
  8. gr.setColorAt(0.4f, Qt::yellow);
  9. gr.setColorAt(0.2f, Qt::red);
  10. gr.setColorAt(0.0f, Qt::darkRed);
  11. QPixmap pm(width, height);
  12. pm.fill(Qt::transparent);
  13. QPainter pmp(&pm);
  14. pmp.setBrush(QBrush(gr));
  15. pmp.setPen(Qt::NoPen);
  16. pmp.drawRect(border, border, 35, height - 2 * border);
  17. pmp.setPen(Qt::black);
  18. int step = (height - 2 * border) / 5;
  19. for (int i = 0; i < 6; i++) {
  20.     int yPos = i * step + border;
  21.     pmp.drawLine(border, yPos, 55, yPos);
  22.     pmp.drawText(60, yPos + 2, QString("%1 m").arg(550 - (i * 110)));
  23. }


这段代码生成的 QPixmap 即:
4条评分好评度+1贡献值+1金钱+5威望+1
砍猪佩琪 好评度 +1 - 2019-11-06
砍猪佩琪 贡献值 +1 - 2019-11-06
砍猪佩琪 威望 +1 - 2019-11-06
砍猪佩琪 金钱 +5 - 2019-11-06
(づ ̄ 3 ̄)づ
离线alone_work

只看该作者 7楼 发表于: 2019-11-06
  
离线砍猪佩琪

只看该作者 8楼 发表于: 2019-11-06
回 20091001753 的帖子
20091001753:海拔 与 颜色 的映射关系,实际上是你自己定义的。
当然,你也可以参照上面叫 texturesurface 的例子,里面有一段代码:
int height = 400;
....... (2019-11-06 13:45) 

非常感谢!!
离线沉默小ai

只看该作者 9楼 发表于: 2019-11-06
学到不少,感觉QT博大精深
快速回复
限100 字节
 
上一个 下一个