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圖片才可以運行程序
運行結果
由於是把整個界面作為蒙版,所以沒有正常的關閉按鈕,可以IDE編輯器停止運行按鈕來關閉程序,也可以通過其他方法
下面我來試一下把透明度設置為0.6,看看界面
self.setWindowOpacity(0.6)
註意要自己添加mask圖片
下面是我使用的mask圖片,歡迎使用
到此這篇關於pyqt5蒙版遮罩mask,setmask的使用的文章就介紹到這瞭,更多相關pyqt5蒙版遮罩 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 基於PyQt5完成的PDF拆分功能
- 基於PyQt5完成pdf轉word功能
- pyqt5教程QGraphicsScene及QGraphicsView使用基礎
- 詳解Python GUI工具取色器
- Python畫圖小案例之多啦A夢叮當貓超詳細註釋