日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pyqt5讲解5:窗口绘图类控件QPainter,QPen,QBrush,QPixmap

發(fā)布時間:2024/9/30 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyqt5讲解5:窗口绘图类控件QPainter,QPen,QBrush,QPixmap 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、QPainter

常用方法

方法描述
begin()開始在目標設(shè)備上繪制
drawArc()在起始角度和最終角度之間畫弧
drawEliipse()在一個矩形內(nèi)畫一個橢圓
drawLine(int x1,int y1,int x2,int y2)繪制一條指定了端點坐標的直線,并且指定當前畫筆位置為(x2,y2)
drawPixmap()從圖像文件中提取 Pixmap 并將其顯示在指定位置
drawPolygon()使用坐標數(shù)組繪制多邊形
drawRect(int x,int y,int w,int h)以給定的寬度和高度從左上角坐標(x,y)開始繪制一個矩形
drawText()顯示給定坐標處的文字
fillRext()使用 QColor 參數(shù)填充矩形
setBrush()設(shè)置畫筆風格
setPen()設(shè)置用于繪制的筆的顏色、大小和樣式

setpen可選參數(shù)

參數(shù)描述
Qt.NoPen沒有線
Qt.SolidLine一條簡單的線
Qt.DashLine由一些像素分隔的短線
Qt.DotLine由一些像素分隔得點
Qt.DashDotLine輪流交替的點和短線
Qt.DashDotDotLine一條短線、兩個點
Qt.MPenStyle畫筆風格的掩碼
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: yudengwu # @Date : 2020/8/20import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import *class Drawing(QWidget):def __init__(self, parent=None):super(Drawing, self).__init__(parent)self.setWindowTitle("在窗口中繪制文字")self.setWindowIcon(QIcon("head.png"))self.resize(300, 200)self.text = "你好呀,總裁余"def paintEvent(self, event):painter = QPainter()painter.begin(self)# 自定義繪制方法self.draw_text(event, painter)painter.end()def draw_text(self, event, qp):# 設(shè)置畫筆顏色qp.setPen(QColor(168, 34, 3))# 設(shè)置字體qp.setFont(QFont('SimSun', 20))# 繪制文字qp.drawText(event.rect(), Qt.AlignCenter, self.text) if __name__ == "__main__":app = QApplication(sys.argv)demo = Drawing()demo.show()sys.exit(app.exec_())

解釋:
首先定義文字
self.text = “你好呀,總裁余”
定義繪制事件
def paintEvent(self, event):
自定義繪制方法
def draw_text(self, event, qp):

繪制點線

#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: yudengwu # @Date : 2020/8/20import sys, math from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import Qtclass Drawing(QWidget):def __init__(self, parent=None):super(Drawing, self).__init__(parent)self.resize(300, 200)self.setWindowTitle("在窗口中畫點")self.setWindowIcon(QIcon("limi.jpg"))def paintEvent(self, event):# 初始化繪圖工具qp = QPainter()qp.begin(self)# 自定義畫點方法self.drawPoints(qp)qp.end()def drawPoints(self, qp):qp.setPen(Qt.red)size = self.size()#判斷當前窗口大小for i in range(1000):# 繪制正弦圖形,周期 [-1000,1000]x = 100 * (- 1 + 2.0 * i / 1000) + size.width() / 2.0y = -50 * math.sin((x - size.width() / 2.0) * math.pi / 50) + size.height() / 2.0qp.drawPoint(x, y)if __name__ == "__main__":app = QApplication(sys.argv)win = Drawing()win.show()sys.exit(app.exec_())

2、QPen

QPen(鋼筆)是基本圖形對象,用于繪制直線、曲線或者給輪廓畫出矩形、橢圓形、多邊形以及其他形狀等

import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import Qt class Drawing(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self): self.setGeometry(300, 300, 280, 270)self.setWindowTitle('鋼筆樣式例子') def paintEvent(self, e): qp = QPainter()qp.begin(self)self.drawLines(qp)qp.end()def drawLines(self, qp):pen = QPen(Qt.black, 2, Qt.SolidLine)qp.setPen(pen)qp.drawLine(20, 40, 250, 40)pen.setStyle(Qt.DashLine)qp.setPen(pen)qp.drawLine(20, 80, 250, 80)pen.setStyle(Qt.DashDotLine)qp.setPen(pen)qp.drawLine(20, 120, 250, 120)pen.setStyle(Qt.DotLine)qp.setPen(pen)qp.drawLine(20, 160, 250, 160)pen.setStyle(Qt.DashDotDotLine)qp.setPen(pen)qp.drawLine(20, 200, 250, 200)pen.setStyle(Qt.CustomDashLine)pen.setDashPattern([1, 4, 5, 4])qp.setPen(pen)qp.drawLine(20, 240, 250, 240)if __name__ == '__main__':app = QApplication(sys.argv)demo = Drawing()demo.show()sys.exit(app.exec_())

3、QBrush

QBrush(畫刷),用于填充如矩形、橢圓形或多邊形等形狀。
QBrush 有三種類型:預(yù)定義、過渡和紋理圖案。

# -*- coding: utf-8 -*-"""【簡介】繪圖中QBrush 的例子 ,繪制九個不同樣式的矩形。"""import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import Qt class Drawing(QWidget): def __init__(self):super().__init__() self.initUI()def initUI(self): self.setGeometry(300, 300, 365, 280)self.setWindowTitle('畫刷例子') self.show()def paintEvent(self, e): qp = QPainter()qp.begin(self)self.drawLines(qp)qp.end()def drawLines(self, qp): brush = QBrush(Qt.SolidPattern)qp.setBrush(brush)qp.drawRect(10, 15, 90, 60)brush = QBrush(Qt.Dense1Pattern)qp.setBrush(brush)qp.drawRect(130, 15, 90, 60)brush = QBrush(Qt.Dense2Pattern)qp.setBrush(brush)qp.drawRect(250, 15, 90, 60)brush = QBrush(Qt.Dense3Pattern)qp.setBrush(brush)qp.drawRect(10, 105, 90, 60)brush = QBrush(Qt.DiagCrossPattern)qp.setBrush(brush)qp.drawRect(10, 105, 90, 60)brush = QBrush(Qt.Dense5Pattern)qp.setBrush(brush)qp.drawRect(130, 105, 90, 60)brush = QBrush(Qt.Dense6Pattern)qp.setBrush(brush)qp.drawRect(250, 105, 90, 60)brush = QBrush(Qt.HorPattern)qp.setBrush(brush)qp.drawRect(10, 195, 90, 60)brush = QBrush(Qt.VerPattern)qp.setBrush(brush)qp.drawRect(130, 195, 90, 60)brush = QBrush(Qt.BDiagPattern)qp.setBrush(brush)qp.drawRect(250, 195, 90, 60)if __name__ == '__main__':app = QApplication(sys.argv)demo = Drawing()demo.show()sys.exit(app.exec_())

4、QPixmap

QPixmap 類用于繪圖設(shè)備的圖像顯示,可作為一個 QPaintDevice 對象,也可以加載到一個控件中。
QPixmap 可以讀取的圖像文件類型有:BMP、GIF、JPG、JPEG、PNG、PBM、PGM、PPM、XBM、XPM 等。
QPixmap 類的常用方法如下:

方法描述
copy()從 QRect 對象復(fù)制到 QPixmap 對象
fromIamge()將 QImage 對象轉(zhuǎn)換為 QPixmap 對象
grabWidget()從給定的窗口小控件創(chuàng)建一個像素圖
grabWindow()在窗口中創(chuàng)建數(shù)據(jù)的像素圖
load()加載圖像文件作為 QPixmap 對象
save()將 QPixmap 對象保存為文件
toImage()將 QPixmap 對象轉(zhuǎn)換為 QImage 對象
# -*- coding: utf-8 -*-'''【簡介】PyQt5中 QPixmap 例子'''import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *if __name__ == '__main__':app = QApplication(sys.argv)win = QWidget()lab1 = QLabel()lab1.setPixmap(QPixmap("D:\機器學(xué)習(xí)\學(xué)習(xí)草稿\duoren.jpg"))vbox=QVBoxLayout()vbox.addWidget(lab1)win.setLayout(vbox)win.setWindowTitle("QPixmap 例子")win.show()sys.exit(app.exec_())

這篇博文內(nèi)容來源于書籍《pyqt5快速開發(fā)與實戰(zhàn)》
我只是記錄下有用的信息,方便以后復(fù)習(xí)查找。
不然學(xué)的東西又忘啦。

電氣專業(yè)的計算機萌新,寫博文不容易。如果你覺得本文對你有用,請點個贊支持下,謝謝。

總結(jié)

以上是生活随笔為你收集整理的pyqt5讲解5:窗口绘图类控件QPainter,QPen,QBrush,QPixmap的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。