本主題,簡(jiǎn)單使用mask,實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的圖形繪制。
一、代碼
# coding = utf-8
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPixmap, QPainter, QBitmap
import sys
class MaskWidget(QWidget): # 不規(guī)則窗體
def __init__(self, parent=None):
super(MaskWidget, self).__init__(parent)
self.setWindowTitle('遮罩的使用')
bp = QBitmap('pic.png') # 遮罩圖(黑白二色)
bp = bp.scaled(423,300) # 圖像太大,縮放一下,縮放后圖像類(lèi)型成為QPixmap類(lèi)型
self.bp = QBitmap(bp) # 遮罩智能使用QBitmap類(lèi)型
self.setMask(self.bp)
def paintEvent(self, QPaintEvent): # 繪制窗口
paint = QPainter(self)
tu = QPixmap('scenery.jpg') # 被繪制的圖像,繪制結(jié)果被遮罩影響
# tu = tu.scaled(423, 300) # 圖樣根據(jù)窗體大小縮放下
# 繪制圖像,該圖像的繪制會(huì)被遮罩影響
paint.drawPixmap(0, 0, self.bp.width(), self.bp.height(), tu)
app = QApplication(sys.argv)
widget = MaskWidget()
widget.setGeometry(300, 300, 423, 300)
widget.show()
sys.exit(app.exec())
二、運(yùn)行效果

遮罩效果