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之从if开始语句的征程

    跟老齐学Python之从if开始语句的征程

    前面做了很多铺垫了,真正的编程我们还没有讲过,各位童鞋也许早就不耐烦了,好吧,今天我们就从if语句来踏上我们的征程
    2014-09-09
  • pandas中Series和DataFrame的rank方法解析

    pandas中Series和DataFrame的rank方法解析

    pandas中的rank方法是用于数据排名的重要工具,它不返回排序后的数据,而是数据的排名。rank方法可以处理相同数据的排名,通过平均排名方式解决排名冲突,并支持自定义排序规则及逆序排名。此外,DataFrame的rank方法允许在行或列上计算排名
    2024-09-09
  • 解决django前后端分离csrf验证的问题

    解决django前后端分离csrf验证的问题

    今天小编就为大家分享一篇解决django前后端分离csrf验证的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • Python 实现字符串中指定位置插入一个字符

    Python 实现字符串中指定位置插入一个字符

    下面小编就为大家分享一篇Python 实现字符串中指定位置插入一个字符,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 利用Python将图片中扭曲矩形的复原

    利用Python将图片中扭曲矩形的复原

    这篇文章主要给大家介绍了关于如何利用Python将图片中扭曲矩形复原的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程

    Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程

    RabbitMQ是一个消息队列服务器,在本文中我们将学习到Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程,需要的朋友可以参考下
    2016-06-06
  • Python读取CSV文件的4种方法与注意事项

    Python读取CSV文件的4种方法与注意事项

    在python里面,读取或写入csv文件时是经常遇到的一个需求,这篇文章主要给大家介绍了关于Python读取CSV文件的4种方法与注意事项,需要的朋友可以参考下
    2023-10-10
  • Python下划线5种含义代码实例解析

    Python下划线5种含义代码实例解析

    这篇文章主要介绍了Python下划线5种含义实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 几个适合python初学者的简单小程序,看完受益匪浅!(推荐)

    几个适合python初学者的简单小程序,看完受益匪浅!(推荐)

    这篇文章主要介绍了几个适合python初学者的简单小程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Python中ImportError错误的详细解决方法

    Python中ImportError错误的详细解决方法

    最近辛辛苦苦安装完了python,最后再运行的时候会出现错误,所以这篇文章主要给大家介绍了关于Python中ImportError错误的详细解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07

最新评论