当前位置: 代码迷 >> 综合 >> QGis二次开发:预览几何图形,QgsRubberBand的应用
  详细解决方案

QGis二次开发:预览几何图形,QgsRubberBand的应用

热度:37   发布时间:2024-02-06 05:25:42.0

QgsRubberBand用于显示临时图形。具体函数应用请看接口,注释写的很详细

QgsMapCanvas mapCanvas=获取你的画布;QgsRubberBand *mRubber = nullptr;
/*
#QgsWkbTypes::LineGeometry, QgsWkbTypes::PolygonGeometry or QgsWkbTypes::PointGeometry
#对应三种几何线 面  点
*/
mRubber = new QgsRubberBand( mapCanvas,QgsWkbTypes::PointGeometry);mRubber->setColor(QColor(255,0,0));
mRubber->setWidth(2);//画布点集
QgsPolyline points;for(xxxx)
{points.append(QgsPoint(x,y,z));
}QgsGeometry g = QgsGeometry::fromPolyline(points);
mRubber->addGeometry(g);//设置缩放
QgsRectangle boundingBox = mRubber->asGeometry().boundingBox();
boundingBox.grow(5);
mapCanvas->setExtent(boundingBox);
mapCanvas->refresh();//删除
delete mRubber;
mRubber=nullprt;

从QgsRubberBand获取几何对象保存到shp

 

/*
#currentlayer 当前的图层
*/
QgsFeature f = QgsVectorLayerUtils::createFeature(currentLayer, mRubber->asGeometry());
currentLayer->addFeature(f);