纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

pyqt5蒙版遮罩 pyqt5蒙版遮罩mask,setmask的使用

集电极   2021-06-10 我要评论
想了解pyqt5蒙版遮罩mask,setmask的使用的相关内容吗集电极在本文为您仔细讲解pyqt5蒙版遮罩 的相关知识和一些Code实例欢迎阅读和指正我们先划重点:pyqt5蒙版遮罩,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


相关文章

猜您喜欢

网友评论

Copyright 2020 www.fresh-weather.com 【世纪下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式