pyqt5蒙版遮罩mask,setmask的使用

 更新时间:2021年06月10日 16:05:35   作者:集电极  
mask()和setmask()一般是在pyqt绘图时常见,本文就来介绍一下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图片才可以运行程序

运行结果

image-20201129143751044

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

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

self.setWindowOpacity(0.6)

image-20201129144113261

注意要自己添加mask图片

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

image-20201129144259121

到此这篇关于pyqt5蒙版遮罩mask,setmask的使用的文章就介绍到这了,更多相关pyqt5蒙版遮罩 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python的自变量选择(所有子集回归,后退法,逐步回归)

    python的自变量选择(所有子集回归,后退法,逐步回归)

    这篇文章主要介绍了python的自变量选择(所有子集回归,后退法,逐步回归),文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • Python字典底层实现原理详解

    Python字典底层实现原理详解

    今天小编就为大家分享一篇Python字典底层实现原理详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python networkx 根据图的权重画图实现

    python networkx 根据图的权重画图实现

    这篇文章主要介绍了python networkx 根据图的权重画图实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python 默认参数问题的陷阱

    python 默认参数问题的陷阱

    本文给大家讲述的是python 默认参数问题的陷阱,有需要的小伙伴可以参考下
    2016-02-02
  • python通过yield实现数组全排列的方法

    python通过yield实现数组全排列的方法

    这篇文章主要介绍了python通过yield实现数组全排列的方法,实例分析了全排列的概念及yield实现的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • python3 配置logging日志类的操作

    python3 配置logging日志类的操作

    这篇文章主要介绍了python3 配置logging日志类的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python爬虫谷歌Chrome F12抓包过程原理解析

    Python爬虫谷歌Chrome F12抓包过程原理解析

    这篇文章主要介绍了Python爬虫谷歌Chrome F12抓包过程原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • python 实现A*算法的示例代码

    python 实现A*算法的示例代码

    本篇文章主要介绍了python 实现A*算法的示例代码,A*作为最常用的路径搜索算法,值得我们去深刻的研究,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • 使用Python进行数据清洗和预处理的实现代码

    使用Python进行数据清洗和预处理的实现代码

    Python作为数据科学领域的热门编程语言,提供了丰富的库和工具来处理和清洗数据,本文将介绍如何使用Python进行数据清洗和预处理,并提供相应的代码示例,需要的朋友可以参考下
    2024-05-05
  • python操作excel之xlwt与xlrd

    python操作excel之xlwt与xlrd

    这篇文章主要介绍了python使用xlwt与xlrd操作excel,需要的朋友可以参考下
    2022-12-12

最新评论