温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

pyqt5中蒙版遮罩mask,setmask的使用方法

发布时间:2021-06-11 10:00:14 来源:亿速云 阅读:883 作者:小新 栏目:开发技术

这篇文章主要介绍pyqt5中蒙版遮罩mask,setmask的使用方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1.理解

mask()setmask()一般是在pyqt绘图时常见,而且在显示不规则图形时更是常见。

参考书籍上说:

setMask()函数的作用是为调用它的控件增加一个遮罩,遮住所选区域以外的部分,使控件看起来是透明的。它的参数可以是一个QBitmap对象或一个QRegion对象。

接下来说说我的理解

setmask()添加的遮罩蒙版是QBitmap对象(就是黑白图片)时,和PS的蒙版作用是大体一致的,黑色就是把当前调用的GUI界面变成蒙版,整个界面是黑色的。而白色可以透过当前GUI界面,即如果把蒙版的区域涂成白色的话,就可以看到当前蒙版下面的界面了。这和PS也是一致的。

mask()一般是给图片自己增加蒙版

2.例子

import sys from PyQt5.QtCore import Qt, QRect, QPoint from PyQt5.QtWidgets import QWidget, QApplication, QDesktopWidget from PyQt5.QtGui import QPixmap, QPainter, QBitmap, QCursor, QPen, QBrush import PyQt5.QtCore as QtCore ''' # setMask()的作用是为调用它的控件增加一个遮罩,遮住所选区域以外的部分,使之看起来是透明的。 # 它的参数可以为QBitmap或QRegion对象,此处调用QPixmap的mask()函数获得图片自身的遮罩,是一个QBitmap对象, # 在示例中使用的是Png格式,它的透明部分实际上就是一个遮罩 ''' class PixWindow(QWidget):  # 不规则窗体     """     证明蒙版的作用,白色显示当前蒙版遮住的界面(不是gui界面,gui界面就是一个蒙版,可以看到蒙版的颜色是黑色,但可以通过设置界面透明度使黑色变成灰色),黑色遮蔽,mask之外的地方透明     """     def __init__(self):         super().__init__()         self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)         self.setStyleSheet('''background-color:black; ''')         # self.setWindowOpacity(0.5)  设置透明度         print(self.geometry().x())         self.pix = QBitmap('mask.png')  # 蒙版         self.resize(self.pix.size())  # 设置当前GUI主界面和蒙版图片一致              def paintEvent(self, event):  # 绘制窗口         pp = QPainter(self.pix)  # 可以想象为给蒙版 pix 添加画手         pen = QPen(Qt.red, 4)  # 钢笔         # pen.setStyle(Qt.NoPen)  # 钢笔无颜色         pp.setPen(pen)  # 可以想象为给画手钢笔         brush = QBrush(Qt.white)   # 画刷,填充钢笔画的区域,填充白色是因为白色可以使蒙版透明         pp.setBrush(brush)         # 画一个矩形,【rectangle矩形】         self.startPoint = QPoint(5,5)         self.endPoint = QPoint(300,200)         pp.drawRect(QRect(self.startPoint, self.endPoint))  # 在蒙版mask上画矩形,         # 在蒙版mask上画矩形,使矩形以内蒙版是白色(可以说是在蒙版之外,使得gui界面透明了),以外蒙版是黑色         self.setMask(self.pix)  # 把当前整个GUI界面设置为蒙版 if __name__ == '__main__':     app = QApplication(sys.argv)     win = PixWindow()     win.show()     sys.exit(app.exec_())

注意要自己添加mask图片才可以运行程序

注意要自己添加mask图片才可以运行程序

注意要自己添加mask图片才可以运行程序

运行结果

pyqt5中蒙版遮罩mask,setmask的使用方法

由于是把整个界面作为蒙版,所以没有正常的关闭按钮,可以IDE编辑器停止运行按钮来关闭程序,也可以通过其他方法

下面我来试一下把透明度设置为0.6,看看界面

self.setWindowOpacity(0.6)

pyqt5中蒙版遮罩mask,setmask的使用方法

注意要自己添加mask图片

下面是我使用的mask图片,欢迎使用

pyqt5中蒙版遮罩mask,setmask的使用方法

以上是“pyqt5中蒙版遮罩mask,setmask的使用方法”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI