QGis 图层属形设置

137 篇文章 44 订阅

QGis 加载的图层包括矢量图层和栅格图层,矢量图层中通常有点、线、面三种常用的图层。加载后的图层显示的风格各异,但是我们可以对他们的不同的风格进行设置使其看起来很好看。
看一下设置的效果:

点图层
这里写图片描述
线图层
这里写图片描述
面图层
这里写图片描述

1.点图层设置关键代码:
获取点图层的各种属性:

	QgsSingleSymbolRendererV2* render = (QgsSingleSymbolRendererV2*)pointVectorLayer->rendererV2();
	QgsMarkerSymbolV2* markSym = (QgsMarkerSymbolV2*)render->symbol();

	QgsSymbolLayerV2List symList = markSym->symbolLayers();
	QgsSvgMarkerSymbolLayerV2* svgMarker = (QgsSvgMarkerSymbolLayerV2*)symList.at(0);
	svgPath = svgMarker->path();//SVG路径
	double size = svgMarker->size();//SVG大小

	double minScale = pointVectorLayer->minimumScale();//最小显示比例
	double maxScale = pointVectorLayer->maximumScale();//最大显示比例

	QgsPalLayerSettings layerSetting = QgsPalLayerSettings::fromLayer(pointVectorLayer);
	bool bShowLabel = layerSetting.enabled;//是否显示标签
	fontColor = layerSetting.textColor;//字体颜色
	int fontSize = layerSetting.textFont.pointSize();//字体大小

	bool bBufferShow = layerSetting.bufferDraw;//轮廓显示
	bufColor = layerSetting.bufferColor;//轮廓颜色

	bool bShadowShow = layerSetting.shadowDraw;//阴影显示
	int shadowAngle = layerSetting.shadowOffsetAngle;//阴影角度
	int shadowDis = layerSetting.shadowOffsetDist;//阴影距离

设置点图层的属性:

//SVG
	QgsSvgMarkerSymbolLayerV2* svgMarker = new QgsSvgMarkerSymbolLayerV2(svgPath);
	QgsSymbolLayerV2List symList;
	symList.append(svgMarker);
	QgsMarkerSymbolV2* markSym = new QgsMarkerSymbolV2(symList);
	QgsSingleSymbolRendererV2* symRenderer = new QgsSingleSymbolRendererV2(markSym);

	pointVectorLayer->setRendererV2(symRenderer);
	svgMarker->setSize(svgSize); //设置svg大小

	//设置标注
	QgsPalLayerSettings layerSetting;
	layerSetting.enabled = bShowLable;//显示标注  

	layerSetting.fieldName = pointVectorLayer->pendingFields()[1].name();
	layerSetting.centroidWhole = true; //设置位置参考的中心点
	//设置字体
	layerSetting.textColor = fontColor;
	QFont font("Times", fontSize);
	font.setBold(true);
	layerSetting.textFont = font;

	//设置轮廓
	layerSetting.bufferDraw = bShowBuf;
	layerSetting.bufferColor = bufColor;
	layerSetting.bufferSize = 1;
	layerSetting.bufferTransp = 0.5;

	//设置阴影
	layerSetting.shadowDraw = bShowShadow;
	layerSetting.shadowOffsetAngle = shadowAngle;
	layerSetting.shadowOffsetDist = shadowDis;

	layerSetting.writeToLayer(pointVectorLayer);

	DrawManager::getInstance()->getMainCanvas()->refresh();

2.线图层的关键代码:
获取线图层的各种属性:

	QgsSingleSymbolRendererV2* symRenderer = (QgsSingleSymbolRendererV2*)(lineVectorLayer->rendererV2());
	QgsLineSymbolV2* lineSymbol = (QgsLineSymbolV2*)symRenderer->symbol();
	lineColor = lineSymbol->color();//线颜色
	double lineWidth = lineSymbol->width();//线宽

设置线图层的各种属性:

	QgsSingleSymbolRendererV2* symRenderer = (QgsSingleSymbolRendererV2*)(lineVectorLayer->rendererV2());
	QgsLineSymbolV2* lineSymbol = (QgsLineSymbolV2*)symRenderer->symbol();
	lineSymbol->setColor(lineColor);
	lineSymbol->setWidth(lineWidth);

	DrawManager::getInstance()->getMainCanvas()->refresh();

3.面图层的关键代码:
获取面图层的属性:

	QgsSingleSymbolRendererV2* symRenderer = (QgsSingleSymbolRendererV2*)(polygonVectorLayer->rendererV2());
	QgsFillSymbolV2* fillSymbol = (QgsFillSymbolV2*)symRenderer->symbol();
	fillColor = fillSymbol->color();//填充颜色
	double alpha = fillSymbol->alpha();//透明度

设置面图层的属性:

	QgsSingleSymbolRendererV2* symRenderer = (QgsSingleSymbolRendererV2*)(polygonVectorLayer->rendererV2());
	QgsFillSymbolV2* fillSymbol = (QgsFillSymbolV2*)symRenderer->symbol();
	fillSymbol->setColor(fillColor);
	fillSymbol->setAlpha((double)alpha/100);

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wb175208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值