主頁 > 知識庫 > pyqt5蒙版遮罩mask,setmask的使用

pyqt5蒙版遮罩mask,setmask的使用

熱門標簽:海外網吧地圖標注注冊 聊城語音外呼系統(tǒng) 騰訊地圖標注沒法顯示 地圖標注自己和別人標注區(qū)別 孝感營銷電話機器人效果怎么樣 商家地圖標注海報 ai電銷機器人的優(yōu)勢 南陽打電話機器人 打電話機器人營銷

1.理解

mask()setmask()一般是在pyqt繪圖時常見,而且在顯示不規(guī)則圖形時更是常見。

參考書籍上說:

setMask()函數的作用是為調用它的控件增加一個遮罩,遮住所選區(qū)域以外的部分,使控件看起來是透明的。它的參數可以是一個QBitmap對象或一個QRegion對象。

其實書上說的不錯,可惜我的理解能力達不到啊😂

接下來說說我的理解

setmask()添加的遮罩蒙版是QBitmap對象(就是黑白圖片)時,和PS的蒙版作用是大體一致的,黑色就是把當前調用的GUI界面變成蒙版,整個界面是黑色的。而白色可以透過當前GUI界面,即如果把蒙版的區(qū)域涂成白色的話,就可以看到當前蒙版下面的界面了。這和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()的作用是為調用它的控件增加一個遮罩,遮住所選區(qū)域以外的部分,使之看起來是透明的。
# 它的參數可以為QBitmap或QRegion對象,此處調用QPixmap的mask()函數獲得圖片自身的遮罩,是一個QBitmap對象,
# 在示例中使用的是Png格式,它的透明部分實際上就是一個遮罩
'''

class PixWindow(QWidget):  # 不規(guī)則窗體

    """
    證明蒙版的作用,白色顯示當前蒙版遮住的界面(不是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)   # 畫刷,填充鋼筆畫的區(qū)域,填充白色是因為白色可以使蒙版透明
        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圖片才可以運行程序

運行結果

由于是把整個界面作為蒙版,所以沒有正常的關閉按鈕,可以IDE編輯器停止運行按鈕來關閉程序,也可以通過其他方法

下面我來試一下把透明度設置為0.6,看看界面

self.setWindowOpacity(0.6)

注意要自己添加mask圖片

下面是我使用的mask圖片,歡迎使用

到此這篇關于pyqt5蒙版遮罩mask,setmask的使用的文章就介紹到這了,更多相關pyqt5蒙版遮罩 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • pyqt5、qtdesigner安裝和環(huán)境設置教程
  • 關于python pyqt5安裝失敗問題的解決方法
  • Python 中PyQt5 點擊主窗口彈出另一個窗口的實現方法
  • PyQt5每天必學之關閉窗口
  • PyQt5的PyQtGraph實踐系列3之實時數據更新繪制圖形
  • pyqt5簡介及安裝方法介紹
  • python使用PyQt5的簡單方法
  • PyQt5每天必學之像素圖控件QPixmap

標簽:六盤水 揚州 聊城 楊凌 南寧 迪慶 撫州 牡丹江

巨人網絡通訊聲明:本文標題《pyqt5蒙版遮罩mask,setmask的使用》,本文關鍵詞  pyqt5,蒙,版遮,罩,mask,setmask,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pyqt5蒙版遮罩mask,setmask的使用》相關的同類信息!
  • 本頁收集關于pyqt5蒙版遮罩mask,setmask的使用的相關信息資訊供網民參考!
  • 推薦文章