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的情況:

程序運行截圖如下:




源碼如下:
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 }
