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