人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

pyqt5蒙版遮罩mask,setmask的使用

發(fā)布日期:2022-03-13 13:48 | 文章來源:腳本之家

1.理解

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

參考書籍上說:

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

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

接下來說說我的理解

當(dāng)setmask()添加的遮罩蒙版是QBitmap對象(就是黑白圖片)時,和PS的蒙版作用是大體一致的,黑色就是把當(dāng)前調(diào)用的GUI界面變成蒙版,整個界面是黑色的。而白色可以透過當(dāng)前GUI界面,即如果把蒙版的區(qū)域涂成白色的話,就可以看到當(dāng)前蒙版下面的界面了。這和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()的作用是為調(diào)用它的控件增加一個遮罩,遮住所選區(qū)域以外的部分,使之看起來是透明的。
# 它的參數(shù)可以為QBitmap或QRegion對象,此處調(diào)用QPixmap的mask()函數(shù)獲得圖片自身的遮罩,是一個QBitmap對象,
# 在示例中使用的是Png格式,它的透明部分實際上就是一個遮罩
'''
class PixWindow(QWidget):  # 不規(guī)則窗體
 """
 證明蒙版的作用,白色顯示當(dāng)前蒙版遮住的界面(不是gui界面,gui界面就是一個蒙版,可以看到蒙版的顏色是黑色,但可以通過設(shè)置界面透明度使黑色變成灰色),黑色遮蔽,mask之外的地方透明
 """
 def __init__(self):
  super().__init__()
  self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
  self.setStyleSheet('''background-color:black; ''')
  # self.setWindowOpacity(0.5)  設(shè)置透明度
  print(self.geometry().x())
  self.pix = QBitmap('mask.png')  # 蒙版
  self.resize(self.pix.size())  # 設(shè)置當(dāng)前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上畫矩形,使矩形以內(nèi)蒙版是白色(可以說是在蒙版之外,使得gui界面透明了),以外蒙版是黑色
  self.setMask(self.pix)  # 把當(dāng)前整個GUI界面設(shè)置為蒙版

if __name__ == '__main__':
 app = QApplication(sys.argv)
 win = PixWindow()
 win.show()
 sys.exit(app.exec_())

注意要自己添加mask圖片才可以運(yùn)行程序

注意要自己添加mask圖片才可以運(yùn)行程序

注意要自己添加mask圖片才可以運(yùn)行程序

運(yùn)行結(jié)果

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

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

self.setWindowOpacity(0.6)

注意要自己添加mask圖片

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

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

香港服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部