当前位置: 首页 > article >正文

Qt多边形填充/不填充绘制

 

1 填充多边形绘制形式 

void GraphicsPolygonItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    Q_UNUSED(option);
    Q_UNUSED(widget);

    //painter->setPen(pen());      // 设置默认画笔
    //painter->setBrush(brush());  // 设置默认画刷

    // 创建一个线性渐变的笔刷,
    // 不仅会根据设定的画笔(pen())绘制多边形的轮廓,还会使用当前设置的笔刷(即线性渐变)来填充多边形内部区域。
    QColor c = brushColor();
    QLinearGradient result(boundingRect().topLeft(), boundingRect().topRight());
    result.setColorAt(0, c.dark(150));
    result.setColorAt(0.5, c.light(200));
    result.setColorAt(1, c.dark(150));
    painter->setBrush(result);

    // 设置画笔并绘制多边形
    painter->setPen(pen());  // 默认画笔参数,绘制多边形边缘
    painter->drawPolygon(m_points);

    // 如果项被选中,绘制选中高亮效果
    if (option->state & QStyle::State_Selected)
        qt_graphicsItem_highlightSelected(this, painter, option);
}

 2 不填充

只通过画笔,绘制多边形轮廓

void GraphicsPolygonItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
{
    Q_UNUSED(option);
    Q_UNUSED(widget);

    // 创建一个红色的画笔,并设置线宽为1
    QPen pen;
    pen.setColor(Qt::red);
    pen.setWidth(1);

    // 设置画笔并绘制多边形
    painter->setPen(pen);
    painter->setBrush(Qt::NoBrush);  // 不填充
    painter->drawPolygon(m_points);

    // 如果项被选中,绘制选中高亮效果
    if (option->state & QStyle::State_Selected)
        qt_graphicsItem_highlightSelected(this, painter, option);
}


http://www.kler.cn/a/384386.html

相关文章:

  • 应用插件化及其进程关系梳理
  • 【自学笔记】神经网络(1)
  • 「Mac畅玩鸿蒙与硬件22」鸿蒙UI组件篇12 - Canvas 组件的动态进阶应用
  • 外包干了2年,快要废了。。。
  • Ansys Zemax | 手机镜头设计 - 第 4 部分:用LS-DYNA进行冲击性能分析
  • Python 在PDF中绘制形状(线条、矩形、椭圆形等)
  • 【jvm】Minor GC
  • 《安富莱嵌入式周报》第345期:开源蓝牙游戏手柄,USB3.0 HUB带电压电流测量,LCR电桥前端模拟,开源微型赛车,RF信号扫描仪,开源无线电收发器
  • BLE 协议之 GATT
  • 【数据集】【YOLO】【目标检测】抽烟识别数据集 6953 张,YOLO/VOC格式标注,吸烟检测!
  • 如何将现有VUE项目所有包更新到最新稳定版
  • 信息安全建设方案,网络安全等保测评方案,等保技术解决方案,等保总体实施方案(Word原件)
  • 解决Postman一直在转圈加载无法打开问题的方法
  • 修改sql server 数据库的排序规则Chinese_PRC_CI_AS(字符集+排序)
  • Redis - 渐进式遍历
  • 03-Dubbo的负载均衡及高性能RPC调用
  • Kafka 源码 KRaft 模式本地运行
  • 读取json文件并解析
  • 【taro react】 ---- 常用自定义 React Hooks 的实现【六】之类渐入动画效果的轮播
  • 初学者指南:用例图——开启您的软件工程之旅
  • 完整版Java类型
  • LInux基础 (一):Linux 系统重要命令拾遗
  • 在本地运行大模型:以Ollama为例
  • 2024最新版JavaScript逆向爬虫教程-------基础篇之Chrome开发者工具学习
  • 架构师:如何提高web网站的请求并发响应量?
  • Python中pandas组件学习总结