前言
- 本章介绍矢量图层面要素2.5D渲染的使用
- 说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps
2.5D渲染
- 2.5D渲染可以将多边形渲染为类3D效果。
QGis设置面符号为2.5D
- 以"houses.shp"文件为例,默认为单一符号,效果如下图
- 设置渲染方式为2.5D,如下图
- 设置完成后,效果如下图
二次开发代码实现2.5D
- 2.5D渲染器的类是
Qgs25DRenderer
,详情见文档,类图如下
- 首先从图层获取渲染器
- 然后设置图层变量,如下示例代码
//实现2.5D效果的关键点在这里
QgsExpressionContextUtils::setLayerVariable( layer, QStringLiteral( "qgis_25d_height" ), 10 );
QgsExpressionContextUtils::setLayerVariable( layer, QStringLiteral( "qgis_25d_angle" ), 70 );
- 最后设置图层渲染器为2.5D
- 完整测试代码如下
void MainWindow::polygon25DSlot()
{
//添加一个线图层
QgsVectorLayer* layer = addTestShape(QStringLiteral("maps/shapefile/houses.shp"));
//从图层获取渲染器
QgsFeatureRenderer * layerRenderer= layer->renderer();
Qgs25DRenderer *D25DRenderer = Qgs25DRenderer::convertFromRenderer(layerRenderer);
//实现2.5D效果的关键点在这里
QgsExpressionContextUtils::setLayerVariable( layer, QStringLiteral( "qgis_25d_height" ), 10 );
QgsExpressionContextUtils::setLayerVariable( layer, QStringLiteral( "qgis_25d_angle" ), 70 );
layer->setRenderer(D25DRenderer);
}
- 效果如下图
总结
- 介绍了矢量图层面要素2.5D渲染