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绘 阅读详情

相关推荐

多智能体强化学习论文——SEAC(NIPS 2020)

存在的问题&研究动机&研究思路 在稀疏奖励的环境下,多智能体的exploration存在效率不足等问题。 在IAC的基础上尝试加入重要性采样,使得每次更新智能体iii的参数时,不再仅仅使用智能体iii的数据,而是使用所有智能体的数据进行智能体iii数据的更新。 对于原始的IAC算法是on-policy的,而SEAC则是off-poligy的。 创新点 在每个智能体iii的actoriactor_iactori​和criticicritic_icritici​的更新过程中,都加入了重要性

我的AI笔记 1207

QPolygon、QRegion

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

hw5230的博客 1656

线阵相机标定必看:如何用Halcon实现亚毫米级精度测量(以HC050标定板为例)

本文以HC050标定板为例,详细阐述了如何利用Halcon实现线阵相机的高精度标定,以达到亚毫米级测量。文章深入剖析了线阵相机标定的核心原理、面临的独特挑战,并提供了从硬件搭建、图像采集到Halcon软件实操的完整路径,重点解析了运动参数设置、精度验证及常见问题排错,为精密测量应用提供系统解决方案。

weixin_29213655的博客 313

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

散户逆袭神器:用通达信DIY指数发现下一个光伏储能(附龙头股筛选模板)

本文详细介绍了如何利用通达信软件的自定义指数功能,构建个人专属的行业监控工具,以发现类似光伏储能这样的潜力赛道。文章提供了从零开始的指数编制步骤、核心的龙头股筛选模板,以及五个关键的数据校验技巧,帮助散户投资者实现机构级的行业分析与机会挖掘,有效提升投资决策能力。

w3x4y的博客 483

【TouchDesigner】三维渲染

Cmera COMP Uniform Scale(按比例缩放):沿x,y,z三个轴等比例缩放相机(通常不建议改变相机大小)。 Constrain To(约束到):让相机附属到某个指定元件上,跟随指定元件运动。 Look At(朝向):让相机在移动过程中始终面对指定的元件。 Pah SOP(相机的路径):输入SOP元件名字,为相机指定移动路径。 Geometry Comp Geometry COMP中的参数与Camera COMP中的参数用法大部分都相似。特殊的是它的instacne页面的

wangpuqing1997的博客 5459

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

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

读书笔记 859

从东南大学906被刷到调剂过程(内含个人感想)

介绍了自己在看到初试成绩,到后期复习以及调剂的全过程,当中也包含了自己的复试中的感想,希望大家理性看待。

Philo的博客 2856

QRegion(转载)

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

路的博客 853

开源机器人库orocos KDL 学习笔记(二):Geometric

开源机器人库orocos KDL 学习笔记二:Geometric 如果按照上一篇搭建的VS2015 orocos KDL环境,会出现3个例程:geometry, chainiksolverpos_lma_demo, trajectory_example. 这一篇看一下geometry的例程。 在frames.hpp中,定义了这些class: - class Vector - class R

行者无疆的博客 6703

【SAP HANA 46】关于HANA CPU高峰到 80-100%

关于HANA CPU高峰到 80-100%

探索 Java 编程的技巧、最佳实践和解决方案。本博客提供针对 Java 开发者的实用指南,涵盖从基础到高级话题,旨在提升编程效率和技能。 429

Qt类之-QRegion

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

ingy 3918

【路径规划】Theta_star算法机器人栅格地图最短路径规划【含Matlab源码 2618期】

Theta_star算法机器人栅格地图最短路径规划 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 365

【Qt之·绘图·类QRegion】

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

m0_66203017的博客 341

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

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

锤石的情趣小锁链 9494

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

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

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

***** 1197

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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、付费专栏及课程。

余额充值