8.12 矢量图层面要素单一符号使用一(简单填充)

news2024/11/25 2:50:54

文章目录

  • 前言
  • 简单填充(Simple fill)
    • QGis设置面符号为简单填充(Simple fill)
    • 二次开发代码实现简单填充(Simple fill)
  • 总结

前言

  • 本章介绍矢量图层线要素单一符号中简单填充(Simple fill)的使用
  • 说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps

简单填充(Simple fill)

  • 以water.shp为例,在QGis中添加water图层,默认使用的符号是简单填充(Simple fill),如下图
    在这里插入图片描述

QGis设置面符号为简单填充(Simple fill)

  • 在“Symbol layer type”中选择“Simple fill”,图层的设置选项包括填充颜色(Fill color)、填充样式(Fill style)、边框颜色(Stroke color)、边框宽度(Stroke width)、边框样式(Stroke style)、连接样式(Join style)、偏移量(Offset)、是否启用该图层(Enable layer)、绘制选项(Draw effects)等,如下图
    在这里插入图片描述
  • 设置完成后,图层效果如下图
    在这里插入图片描述

二次开发代码实现简单填充(Simple fill)

  • QgsSimpleFillSymbolLayer是简单填充(Simple fill),详情见文档,类图如下
    在这里插入图片描述
  • QgsSimpleFillSymbolLayer构造函数如下,可以看到和QGis设置界面一一对应
QgsSimpleFillSymbolLayer::QgsSimpleFillSymbolLayer( const QColor &color, Qt::BrushStyle style, const QColor &strokeColor, Qt::PenStyle strokeStyle, double strokeWidth,
    Qt::PenJoinStyle penJoinStyle )
  : mBrushStyle( style )
  , mStrokeColor( strokeColor )
  , mStrokeStyle( strokeStyle )
  , mStrokeWidth( strokeWidth )
  , mPenJoinStyle( penJoinStyle )
{
  mColor = color;
}
  • 创建Simple fill layer有两种方法:构造函数和静态函数create
  • 方法一
  1. 从图层获取渲染器
    //从图层获取渲染器
    QgsFeatureRenderer * layerRenderer= layer->renderer();
    QgsSingleSymbolRenderer *singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
  1. 构造函数:修改属性可以调用setxxx函数,如setFillColor
auto simplefillSymbolLayer = new QgsSimpleFillSymbolLayer();
simplefillSymbolLayer->setFillColor(QColor("red"));
  1. 创建符号并设置到渲染器
    //多个Symbol Layer构成一个Symbol
    QgsSymbolLayerList layerList;
    layerList << simplefillSymbolLayer;
    //构造QgsFillSymbol并设置renderer
    auto fillSymbol = new QgsFillSymbol(layerList);
    singleSymbolRenderer->setSymbol(fillSymbol);
    layer->setRenderer(singleSymbolRenderer);
  • 方法二
    方法一中步骤1,3不变,步骤2中使用create()成员函数,颜色方案同样有两种选择
    QVariantMap mp;
    mp["color"] = QStringLiteral("red");
    auto simplefillSymbolLayer = QgsSimpleFillSymbolLayer::create(mp);
  • 完整测试代码如下
void MainWindow::polygonSimplefillSlot()
{
    //添加一个线图层
    QgsVectorLayer* layer = addTestShape(QStringLiteral("maps/shapefile/water.shp"));
    //从图层获取渲染器
    QgsFeatureRenderer * layerRenderer= layer->renderer();
    QgsSingleSymbolRenderer *singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
#if 1
    auto simplefillSymbolLayer = new QgsSimpleFillSymbolLayer();
    simplefillSymbolLayer->setFillColor(QColor("red"));
#else
    QVariantMap mp;
    mp["color"] = QStringLiteral("red");
    auto simplefillSymbolLayer = QgsSimpleFillSymbolLayer::create(mp);
#endif
    //多个Symbol Layer构成一个Symbol
    QgsSymbolLayerList layerList;
    layerList << simplefillSymbolLayer;
    //构造QgsFillSymbol并设置renderer
    auto fillSymbol = new QgsFillSymbol(layerList);
    singleSymbolRenderer->setSymbol(fillSymbol);
    layer->setRenderer(singleSymbolRenderer);
}
  • 效果如下图
    在这里插入图片描述
    在这里插入图片描述

总结

  • 介绍了矢量图层面要素单一符号中的简单填充(Simple fill)使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1833097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

玩转nRF52840-DK开发套件(1)

Nordic Semiconductor nRF52840开发套件 (nRF52840-DK) 是一款采用nRF52840多协议SoC&#xff08;片上系统&#xff09;的多功能单板开发工具&#xff0c;适用于蓝牙5.2/蓝牙低功耗、802.15.4 / Thread、ANT/ANT以及2.4GHz专有应用。nRF52840-DK与 Arduino Uno Revision 3 标准…

【html】用html5+css3+JavaScript制作一个计数器

目录 简介&#xff1a; 效果图&#xff1a; 源码&#xff1a; html: CSS: JS: 源码解析&#xff1a; 简介&#xff1a; 在日常生活当中很多事情都需要用到计数器特别是在体育运动当中&#xff0c;可以我们那么我们可不可以通过网页来制作一个计数器呢答案是肯定的我们需要利…

猫头虎推荐20个值得体验的通用大模型

猫头虎推荐20个值得体验的通用大模型 &#x1f680; 大家好&#xff0c;我是猫头虎&#xff0c;一名专注于科技领域的自媒体博主。今天是周一&#xff0c;新的开始&#xff0c;我们来深入探讨一下当前最值得体验的通用大模型。这些AI模型不仅功能强大&#xff0c;而且在各自领…

YonSuite银企直联:成长型企业数智转型的强力引擎

在当今数字化转型的浪潮中&#xff0c;成长型企业正面临着前所未有的发展机遇与挑战。在这场数字化转型的竞技场上&#xff0c;银企直联凭借其独特的优势&#xff0c;成为企业金融管理的重要利器&#xff0c;为企业带来前所未有的资金管理体验。用友YonSuite作为领先的数智化转…

rk3588 rkllm 安装部署

这是测试版本。 下载转换工具 $ git clone https://github.com/airockchip/rknn-llm.git安装转换环境 遵循此文档在PC Linux上安装Conda。 https://conda.io/projects/conda/en/stable/user-guide/install/linux.html 创建conda $ conda create -n RKLLM-Toolkit python3.…

RAG未来的出路

总有人喊RAG已死,至少看目前不现实。 持这个观点的人,大多是Long context派,老实说,这派人绝大多数不甚理解长上下文的技术实现点,就觉得反正context越长,越牛B,有点饭圈化 ,当然我并不否认长上下文对提升理解力的一些帮助,就是没大家想的那么牛B而已(说个数据,达到…

清远mes管理系统助力企业降本增效

清远MES管理系统可以帮助企业降本增效的方式包括但不限于以下几个方面&#xff1a; 生产过程优化&#xff1a;清远MES系统可以实时监控生产过程中的各个环节&#xff0c;包括设备状态、生产进度、质量指标等&#xff0c;帮助企业管理人员及时了解生产情况并做出相应的调整和控制…

白酒:茅台镇白酒的品牌合作与跨界营销案例

云仓酒庄豪迈白酒&#xff0c;作为茅台镇的知名品牌&#xff0c;在品牌合作与跨界营销方面也有着杰出的表现。通过与不同领域品牌的合作&#xff0c;豪迈白酒进一步拓宽了市场渠道&#xff0c;提升了品牌曝光度和影响力。 首先&#xff0c;云仓酒庄豪迈白酒与品质餐产品牌的合作…

怎么制作酒店订房功能

在这个快节奏的时代&#xff0c;每一次旅行都如同一次心灵的远航。而酒店&#xff0c;作为旅途中的“避风港”&#xff0c;它的选择显得尤为重要。你是否曾在忙碌的行程中&#xff0c;为了寻找一家心仪的酒店而焦头烂额&#xff1f;是否曾在深夜的街头&#xff0c;为了找到一个…

21组Midjourney绘画关键词,专为游戏设计的奇异生物的盛宴

21组AI绘画关键词&#xff0c;无一不在专为游戏设计的领域中发挥着巨大的作用。从2D游戏艺术到Xbox 360图形&#xff0c;从科幻怪物到异世界写实&#xff0c;这些关键词为游戏开发者提供了丰富多彩的创意资源。通过AI绘画工具&#xff0c;游戏画面呈现更加逼真、独特的设计风格…

【拥抱鸿蒙】HarmonyOS NEXT实现双路预览并识别文字

我们在许多其他平台看到过OCR功能的应用&#xff0c;那么HarmonyOS在这方面的支持如何呢&#xff1f;我们如何能快速使用这一能力呢&#xff1f;使用这一能力需要注意的点有哪些呢&#xff1f;就让我们一起来探究吧~ 【开发环境】 版本规则号&#xff1a;HarmonyOS NEXT版本类…

研发团队的「技术债」如何进行量化管理?

我共事过的每个团队都会讨论技术债。有些团队知道如何管理它&#xff0c;也有些团队因此崩溃瘫痪&#xff0c;甚至有一家公司因为技术债务没有得到解决而宣告失败。 什么是技术债务&#xff1f; 「债务」这个比喻非常恰当。最早提出「技术债务 Technical Debt」比喻的工程师 W…

干货 | 使用 Navicat BI 解锁数据的力量

商业智能&#xff08;BI&#xff09;是一种将数据转化为可执行洞察的实践&#xff0c;能够帮助业务领导者提升整体业绩。这个过程中最重要的一个阶段是数据探索和可视化阶段&#xff0c;它涉及通过报告将数据组织并转化为有意义的信息。为了让数据更易于理解&#xff0c;BI 专业…

转型AI产品经理(11):“损失规避”如何应用在Chatbot产品中

损失规避是行为经济学和心理学中的一个重要概念&#xff0c;它揭示了人们在面对潜在的收益和损失时&#xff0c;表现出对损失的强烈偏好避免&#xff0c;相比于获得同等价值的利益&#xff0c;人们对损失的感受更为强烈。它主要有以下特征&#xff1a; 1、不对称性 损失规避体…

HTML中的资源提示关键词

渲染阻塞问题 之前在学习浏览器的渲染原理的时候我们就知道&#xff1a;因为浏览器一次只能开启一个渲染主线程&#xff0c;所以当浏览器解析到script标签时会停止DOM树的构建&#xff0c;转而去执行script&#xff0c;如果script中引用的是外部脚本&#xff0c;则浏览器会先从…

房间预订系统怎么做

在这个日新月异的时代&#xff0c;旅游已经成为了许多人生活中不可或缺的一部分。然而&#xff0c;在规划一场完美的旅行时&#xff0c;房间预订往往是一个让人头疼的问题。今天&#xff0c;我要为大家揭秘一款颠覆传统的房间预订系统——它不仅仅是一个预订工具&#xff0c;更…

来自红队大佬的经验之谈---命令执行过滤绕过-Windows篇

感谢来自老流氓大佬的投稿&#xff0c;本次文章介绍的是在windows环境下&#xff0c;过滤的“点”和“空格”等符号&#xff0c;导致在写入webshell时会受限。以下是针对该目标的绕过记录。 首先是命令执行和过滤验证&#xff0c;如下&#xff1a;​ 执行dir命令&#xff0c;…

APP Android

APP Android 安卓源生应用程序 APP IOS-CSDN博客 05.04 06:11Testing

【Qt】chartView设置橡皮筋效果(RubberBand)

1. 效果 2. 代码 QChartView* chartView new QChartView();chartView->setRubberBand(QChartView::RectangleRubberBand);

基于深度学习的鸟类检测识别系统【python源码+Pyqt5界面+数据集+训练代码 MX_003期】

简介&#xff1a; 基于深度学习的鸟类检测识别系统在当今世界中具有广泛的应用前景。系统不仅可以帮助生态学家和保护人员监测和保护鸟类种群&#xff0c;还能在农业管理、城市生态监测以及科学研究领域发挥重要作用。通过自动化的图像识别技术&#xff0c;可以实现对鸟类种类、…