Qt 加载HeightMap(高度图)构造3D地形图
Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图
QHeightMapSurfaceDataProxy:
是Q3DSurface的一个基本代理类。他是专门加载高度图。
高度图是没有X,Z轴的概念,所以在编程的时候要指定minXValue, maxXValue, minZValue, maxZValue属性。x值主要是图的水平方向,y值为垂直方向。
QSurface3DSeries中setDrawMode():设置QSurface3DSeries画图的模式,有以下几种:
QSurface3DSeries::DrawWireframe:只画网格
QSurface3DSeries::DrawSurface:只画表面
QSurface3DSeries::DrawSurfaceAndWireframe:画网格及表面
QSurface3DSeries中flatShadingEnabled():设置表面底纹光滑。默认其他下是true。当为false时,表面将会用圆来替代。不是平滑的。什么意思,这里用图来演示!
这个是为true的情况:
这个是为false的情况:
程序运行截图如下:
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
源码如下:main.cpp
1 #include <QApplication>
2 #include <QtDataVisualization>
3 #include <QHeightMapSurfaceDataProxy>
4 #include <QSurface3DSeries>
5 #include <QImage>
6
7 using namespace QtDataVisualization;
8
9 int main(int argc, char *argv[])
10 {
11 QApplication a(argc, argv);
12
13 Q3DSurface surface;
14 surface.setFlags(surface.flags() ^ Qt::FramelessWindowHint);
15 surface.resize(800, 600);
16 surface.show();
17
18 //添加数据
19 QImage image(":/img/Heightmap4.png");
20 QHeightMapSurfaceDataProxy *proxy = new QHeightMapSurfaceDataProxy(image);
21 proxy->setValueRanges(0.0f, 500.0f, 0.0f, 500.0f);
22 QSurface3DSeries *series = new QSurface3DSeries(proxy);
23 series->setDrawMode(QSurface3DSeries::DrawSurface);
24 series->setFlatShadingEnabled(false);
25 surface.addSeries(series);
26
27 return a.exec();
28 }
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
相关文章
- Qt编写自定义控件30-颜色多态按钮
- Qt编写自定义控件54-时钟仪表盘
- Qt编写安防视频监控系统62-子模块6预置位
- Qt编写安防视频监控系统31-onvif设备搜索
- Qt开发经验小技巧166-170
- Qt通用方法及类库10
- Qt QModbusServer类
- Qt 信号槽收发自定义类/自定义结构体的2种方法
- Qt OpenGL 加载3D世界,并在其中漫游
- Qt QChart 自定义qChartView(重写鼠标事件)完美实现缩放与平移(新增android下手势缩放实现)
- C++QT开发——GraphicsView(图形视图)
- Qt之实现物体移动(QPainter)
- Qt 使用QSharedMemory方式实现数据跨界面传输
- Qt调用python有参和无参方法,取方法返回值
- Qt 在控件上面绘图 label,pushbutton