QRegion

QRegion 限制 QPainter 的绘制区域 一般在绘制的过程中,我们有很大的可能性是需要擦除的,擦除的时候也只能擦除我们目前在画的颜色区域,并不会将所有的都擦除。看着这个需求的时候,我首先想到的是图层,就是类似PS的图层一样,就是将这张图片中的每一种颜色单独提取出来另作一种图层,这样就会得到多张只包含一种颜色的图片,这些图片的其他区域是透明的。有一张图片,这张图片上面被我用不同的颜色画了不同的区域,然后我想选择这张图片中的某一种颜色,只在这种颜色所在的区域内进行绘制或者用橡皮擦擦除这种颜色,而不会影响其他颜色。 阅读详情

描述说明

QRegion为painter指定一个裁剪区域。 QRegion 是使用 QPainter:setClipRegion ()来限制画图区域。 还有一个 QWidget:repaint()函数,它接受一个 QRegion 参数。QRegion 是最大化降低屏幕区域被repaint更新的最好工具。

这个类不适合构建形状,尤其是轮廓。 可以结合QPainter使用 QPainterPath创建路径和形状 。

QRegion 是一个 隐式共享 类。

创建和使用区域

可以从矩形、椭圆、多边形或者一个位图创建区域。可以利用 united(), intersected(), subtracted(), or xored()(异或)将简单区域创建复杂区域。你也可以通过translate()来移动一个区域。

可以测试是否isEmpty()或者是否contains()一个QPoint(点)或者QRect(矩形)。可以使用boundingRect()找到一个边界矩形。

rects()函数将区域分成多个矩形。

以下是利用复杂区域的例子:

void Widget::paintEvent(QPaintEvent *e)
{
    QRect rect1(100, 100, 200, 80);
    QRect rect2(100, 120, 250, 100);
    QRegion r1(rect1);
    QRegion r2(rect2);    
    QRegion r3 = r1.intersected(r2);         

    QPainterPath path;
    path.addRegion(r3);
    QPainter painter(this);
    QPen pen(QColor(255,0,0),2);
    painter.setPen(Qt::green);
    painter.drawRect(rect1);

    painter.setPen(Qt::red);
    painter.drawRect(rect2);


    painter.setPen(pen);
    painter.setBrush(Qt::yellow);
    painter.drawPath(path);
}

结果显示

这里写图片描述

Qt界面美化实战:窗口透明、异形控件与毛玻璃效果实现 在桌面应用开发中,界面美化是提升用户体验的关键环节。通过掌握窗口透明、半透明与不规则形状的实现原理,开发者能够突破传统矩形界面的限制,为应用注入更多视觉表现力。这些技术不仅涉及基础的图形渲染概念,更与操作系统级的窗口合成机制紧密相关。在Qt框架中,通过合理运用窗口属性、遮罩设置与自定义绘制,可以实现从简单的透明度调整到复杂的毛玻璃效果。这些技术在实践中具有广泛的应用价值,例如创建现代化播放器界面、个性化悬浮工具或系统级通知组件。本文聚焦于Qt中的窗口透明化与异形控件开发,深入探讨了如何通过QPainter绘 阅读详情

相关推荐

微信小程序scroll-view,点击menu,滚动到锚点;滚动到锚点,激活menu。

首先看看效果图1、首先是点击菜单,滚动列表,这个实现比较简单。直接使用scroll-view 的 scroll-into-view属性,小程序文档。<view class='container'> <!-- 菜单 --> <view class='menu'> <ul> <!-- scrollList 修改cate --&g...

weixin_39834214的博客 1万+

QPolygon、QRegion

QPolygon继承自是QVector 。表示多边形的点集。除了QVector提供的功能外,QPolygon还提供了一些特定于点的功能。从给定的矩形构造一个多边形。如果closed为true,则多边形的第五个点设置为rectangle.topLeft()。从点集构造一个多边形。构造一个多边形,含有size个空点(QPoint(0,0))。构造一个多边形,不含点。多边形的外接矩形。如果多边形为空则返回QRect(0, 0, 0, 0)。点是否在多边形范围之内。

hw5230的博客 1656

RPA机器人技术原理初探

RPA初步

曲折旅程,艰难人生 2138

QRegion方法功能(5.12)

//for starf study #include "mainwindow.h" #include "ui_mainwindow.h" #include<QDebug> #include<QPainter> #include<QPen> #include<QBrush> #include<QRect> #include<QRegion> //QRegion类为画家指定剪辑区域。 //QRegion与qPaint::setCli.

For_1ove的博客 1463

Claude code-review 插件深度解析:AI 驱动的智能代码审查系统

Claude Code Review 插件深度解析:AI 驱动的智能代码审查系统 该插件通过多 Agent 并行工作方式自动审查 PR,采用置信度评分机制(80+分保留)过滤误报,确保高质量反馈。核心功能包括: 5个专业化 Agent 并行审查(规范合规性、bug检测、历史分析等) 8步工作流程:从资格检查到 GitHub 评论发布 创新性置信度评分系统(0-100分),严格过滤7类误报 结合 CLAUDE.md 规范和历史 PR 评论实现一致性审查 技术亮点: 多 Agent 架构(Haiku/Sonne

虚心若愚 2266

⑩电子产品拆解分析-家用无线遥控开关433Mhz

①免布线随意贴,装上就能使用解决单线开关烦恼;②遥控配对简单,无线通讯距离长,信号可穿墙;

a6662580的博客 4706

绘画系统(14):【类】QRegion[官翻]

可以通过使用united() ,intersected() ,subtracted() 或xored() (异或)组合简单区域来创建复杂区域。另请参见QPainter :: setClipRegion() ,QPainter :: setClipRect() 和QPainterPath。在区域上进行迭代(使用begin() ,end() 或C ++ 11范围循环)将区域分解为矩形。另请参见rbegin() 和rend()。另请参见begin() 和end()。指定要创建的区域的形状。

读书笔记 859

LDRA Testbed软件静态分析_常见问题及处理

通过前面的几篇文章,LDRA Testbed软件静态分析的内容基本讲解完了,本篇文章将针对使用Testbed进行软件静态分析的常见问题进行介绍。 到此为止,LDRA Testbed软件静态分析的内容已经全部讲完,如果有问题,欢迎私信提问(不经常登录,回复可能不及时,见谅)。下一篇文章将开始讲解如何使用Testbed进行单元测试。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 2590

QRegion(转载)

原文链接:https://blog.youkuaiyun.com/aucaser/article/details/50053161 QRegion为painter指定一个裁剪区域。 QRegion 是使用 QPainter:setClipRegion ()来限制画图区域。 还有一个 QWidget:repaint()函数,它接受一个 QRegion 参数。QRegion 是最大化降低屏幕区域被repaint...

路的博客 853

23、视频时间码与数字同步技术详解

本文深入解析了视频时间码与数字同步技术的核心原理及应用。涵盖线性时间码(LTC)和垂直间隔时间码(VITC)的结构与特性,详细阐述了降帧时间码的补偿机制及其在影视制作中的重要性。文章还介绍了定时参考信号(TRS)在SDTV和HDTV中的实现方式,分析了辅助数据的传输结构与发展趋势,并探讨了SDI编码技术及其在不同视频标准下的差异。通过实际应用场景和技术发展影响的剖析,全面展示了这些关键技术如何支撑现代视频系统的高效运行与持续创新。

wine的专栏 239

SAP-ABAP:SAP采购业务核心表关联关系详解

MM(核心)、FI(财务)、SD(计划协议):PR → PO → GR → MIRO → FI过账。

baidu_35680696的博客 930

Qt类之-QRegion

原文地址:http://blog.youkuaiyun.com/aucaser/article/details/50053161 描述说明 QRegion为painter指定一个裁剪区域。 QRegion 是使用 QPainter:setClipRegion ()来限制画图区域。 还有一个 QWidget:repaint()函数,它接受一个 QRegion 参数。QRegion 是最大化降低屏...

ingy 3918

小米汽车车载多摄像头视频链路深度解析 | MAX96792/MAX96724/MAX96781 实战分享

通过合理的输入输出规划 + 虚拟通道管理 + 加串行策略,可以在成本和性能之间取得最佳平衡,这就是多摄像头系统设计的核心精髓。

weixin_43199439的博客 1548

【Qt之·绘图·类QRegion】

QRegion表示一个区域。QRegion与QPainter::setClipRegion()一起使用,可将绘制区域限制为需要绘制的区域。QRegion可用于限制重绘更新区域。

m0_66203017的博客 341

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Qt QRegion裁剪区域实现部分区域刷新 避免闪烁区域太大

QRegion为painter指定一个裁剪区域。  QRegion 是使用 QPainter:setClipRegion ()来限制画图区域。 还有一个 QWidget:repaint()函数,它接受一个 QRegion 参数。QRegion 是最大化降低屏幕区域被repaint更新的最好工具。 我遇到的问题 :我想鼠标左键点击选取下图某个监控视频时,能够加上黄色的边框,这个时候我刷新一整块方

锤石的情趣小锁链 9494

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

139-QPainter和Graphics/View绘图-QPainter绘图-裁剪区域QRegion

QRegion类专门用于定义裁剪区域,QWidget 的 repaint()方法可以接受 QRegion参数,限制刷新的范围。当所绘图形比较大时,若只想显示绘图上的一部分区域的内容,其他区域的内容不显示,就需要使用裁剪区域。下面的程序将一个图像绘制到窗口中,只显示两个矩形和两个椭圆形区域内的图像,程序运行结果如图所示。QRegion 的常用方法如表所示主要方法介绍如下。

***** 1197

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Qt :Qt gui 4 error: C2039: “rectangle”: 不是“QRegion”的成员

Qt :Qt gui 4 error: C2039: “rectangle”: 不是“QRegion”的成员

好儿郎~志在四方 3484

QRegion使用不当造成的X Error:BadMatch问题处理办法

问题描述:在solaris中启动qt写的程序无法正常显示gif,报错如下: X Error:BadMatch (invalid parameter attributes) 8 Major opcode:59(X_SetClipRectangles) Resource id: 0x2003d5 操作系统:solaris10 QT版本:QT4.8.0 问题原因:显示多个gif时,在设置重回区域是,使用...

xuanbin5437的博客 1457

QT4中的类QRegion实例

例程: #include #include #include #include class MyMainWindow:public QWidget { public: MyMainWindow(QWidget *parent = 0); private: void paintEvent(QPaintEvent *); QPainter *paint; }; void MyMainWindo

wxf110的专栏 1955

使用QPainter、QPainterPath、QRegion绘图实践

使用qt的QPainter可以绘制出任何你想要的图形,同时也须要一定的功底; 这里是个人使用的一些实践例子,以作学习和备忘。本次介绍主要有画弦、 矩形、圆、椭圆、QPainterPath一次性画多个、画贝塞尔曲线、画扇形、 画弧、裁剪、掩码等。

wanghualin033的博客 1万+

项目实战:Qt手机模拟器拉伸旋转框架

若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.youkuaiyun.com/qq21497936 原博主博客导航:https://blog.youkuaiyun.com/qq21497936/article/details/102478062 本文章博客地址:https://blog.youkuaiyun.com/qq21497936/article/details/106817346 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 4万+

qt 自定义不规则窗体与按钮

设置不规则的窗体,主要使用 QRegion 类定义可见区域,并通过setMask 函数实现,如下为qt 自带的实例搜索 Shaped Clock Example 即可找到。 ShapedClock::ShapedClock(QWidget *parent) : QWidget(parent, Qt::FramelessWindowHint | Qt::Win...

亦轩的专栏 1210

使用QWidget画圆环图的几种方法

今天无意看到了别人画3d饼图,无意中发现了画圆环图的一些方法;由此,做一个分享。 1、使用QRegion做出一个圆环区域,使用QPainterPath添加这个区域,然后fillPath。 QPainter painter(this); painter.save(); //设置反锯齿 painter.setRenderHints(QPainter::Antiali

wanghualin033的博客 8319
上一篇: QPainterPath在指定区域绘图
下一篇: opengl函数笔记
ambirder
博客等级 码龄12年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值