PyQt5繪圖API


PyQt5繪圖API大全
1、繪圖API:繪制文本
#1.文本 2.各種圖形 3.圖像
#QPainter painter=QPainter() painter.begin() painter.end() painter.drawtext() 必須在painevent事件方法中繪制各種元素

import sys
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter,QColor,QFont
class Drawtext(QWidget):
def __init__(self):
super(Drawtext,self).__init__()
self.setWindowTitle("在窗口上面繪制文直線文本")
self.resize(500,200)
self.text="Python從菜鳥到高手"

def paintEvent(self,event):
painter=QPainter(self) #定義一個畫布
painter.begin(self) #初始化畫布屬性
print("繪圖函數已經調用")
painter.setPen(QColor(150,43,5)) #設置畫筆的屬性顏色
painter.setFont(QFont("SimSun",25)) #設置繪畫顯示字體

painter.drawText(event.rect(),Qt.AlignCenter,self.text) #設置繪畫區域范圍
painter.end()
if __name__=="__main__":
app=QApplication(sys.argv)
p=Drawtext()
p.show()
sys.exit(app.exec_())

2、繪制各種圖形(圓,矩形,多邊形,各種函數圖形,橢圓,圓,弧線等)
import sys,math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class Drawall(QWidget):
def __init__(self):
super(Drawall,self).__init__()
self.setWindowTitle("繪制各種圖形")
self.resize(300,600)
def paintEvent(self,event):
painter=QPainter(self) #先定義畫布
painter.begin(self) #初始化畫布

painter.setPen(Qt.blue)

#繪制弧線
rect=QRect(0,10,100,100) #確定畫出圓弧的正方形區域(x左上角橫坐標,y左上角縱坐標,length矩形長,width矩形寬)
#alen參數:1個alen長度等於1/16度
painter.drawArc(rect,0,90*16) #繪制圓弧的角度范圍(矩形區域,起始角度,終止角度)
#通過弧線來繪制圓
painter.setPen(Qt.red)
painter.drawArc(120,10,100,100,0,360*16) #圓的半徑大小可以通過設置矩形區域的長寬大小來進行設置
#繪制帶弦的弧線
painter.drawChord(10,120,100,100,12,130*16)
# 繪制扇形
painter.drawPie(10,240,100,100,12,130*16)
#繪制橢圓
painter.drawEllipse(120,120,100,150)

#繪制多邊形(定義多邊形的頂點坐標)
point1=QPoint(140,380)
point2=QPoint(270,420)
point3=QPoint(290,512)
point4=QPoint(290,588)
point5=QPoint(200,533)
polygon=QPolygon([point1,point2,point3,point4,point5])
painter.drawPolygon(polygon)

#繪制圖像
image=QImage("./image-1/1-1.jpg")
rect=QRect(10,400,image.width()/15,image.height()/15) #在某個定義好的區域畫出圖像大小
painter.drawImage(rect,image) #繪制圖像函數參數設置
painter.end()

if __name__=="__main__":
app=QApplication(sys.argv)
p=Drawall()
p.show()
sys.exit(app.exec_())

3、繪制像素點正弦曲線
import sys,math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import Qt
class Drawpoints(QWidget):
def __init__(self):
super(Drawpoints,self).__init__()
self.setWindowTitle("窗口像素點繪制正弦曲線")
self.resize(300,200)
def paintEvent(self,event):
painter=QPainter(self)

painter.begin(self)
painter.setPen(Qt.blue)
size=self.size()

for i in range(100):
x=100*(-1+2.0*i/100)+size.width()/2.0 #將主窗口的寬度中心作為x周軸原點
y=-50*math.sin((x-size.width()/2.0)*math.pi/50)+size.height()/2.0 #將主窗口的高度中心作為x周軸原點
painter.drawPoint(x,y)

painter.end()

if __name__=="__main__":
app=QApplication(sys.argv)
p=Drawpoints()
p.show()
sys.exit(app.exec_())

4、繪制不同類型的直線,主要是指對於直線的樣式的設置,對於pen樣式的設置
import sys,math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import Qt
class Drawmultiline(QWidget):
def __init__(self):
super(Drawmultiline,self).__init__()
self.setWindowTitle("設置pen的樣式")
self.resize(300,300)
def paintEvent(self,event):
painter=QPainter(self)

painter.begin(self)
pen=QPen(Qt.red,2,Qt.SolidLine) #設置實線樣式直線
painter.setPen(pen)
painter.drawLine(20,40,250,40)

pen.setStyle(Qt.DashLine) #設置寬虛線樣式直線
painter.setPen(pen)
painter.drawLine(20, 80, 250, 80)

pen.setStyle(Qt.DashDotDotLine) # 設置雙點划線線樣式直線
painter.setPen(pen)
painter.drawLine(20, 120, 250, 120)

pen.setStyle(Qt.DashDotLine) # 設置單點划線線樣式直線
painter.setPen(pen)
painter.drawLine(20, 160, 250, 160)

pen.setStyle(Qt.DotLine) # 設置窄虛線樣式直線
painter.setPen(pen)
painter.drawLine(20, 200, 250, 200)

pen.setStyle(Qt.CustomDashLine) # 自定義樣式直線,可以使用列表中數值比例來進行設置
pen.setDashPattern([1,10,5,4])
painter.setPen(pen)
painter.drawLine(20, 240, 250, 240)

size=self.size()
painter.end()

if __name__=="__main__":
app=QApplication(sys.argv)
p=Drawmultiline()
p.show()
sys.exit(app.exec_())

5、用畫刷填充區域
import sys,math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class Fillrect(QWidget):
def __init__(self):
super(Fillrect,self).__init__()
self.setWindowTitle("用畫刷填充區域")
self.resize(900,600)



def paintEvent(self,event):
painter=QPainter(self) #先定義畫布
painter.begin(self) #初始化畫布
brush=QBrush(Qt.SolidPattern) #定義實心畫刷樣式
painter.setBrush(brush)
painter.drawRect(10,15,90,60)

brush = QBrush(Qt.Dense1Pattern) # 定義實心畫刷樣式1
painter.setBrush(brush)
painter.drawRect(120, 15, 90, 60)

brush = QBrush(Qt.Dense2Pattern) # 定義實心畫刷樣式2
painter.setBrush(brush)
painter.drawRect(230, 15, 90, 60)

brush = QBrush(Qt.Dense3Pattern) # 定義實心畫刷樣式3
painter.setBrush(brush)
painter.drawRect(340, 15, 90, 60)
brush = QBrush(Qt.Dense4Pattern) # 定義實心畫刷樣式4
painter.setBrush(brush)
painter.drawRect(450, 15, 90, 60)
brush = QBrush(Qt.Dense5Pattern) # 定義實心畫刷樣式5
painter.setBrush(brush)
painter.drawRect(560, 15, 90, 60)
brush = QBrush(Qt.Dense6Pattern) # 定義實心畫刷樣式6
painter.setBrush(brush)
painter.drawRect(670, 15, 90, 60)
brush = QBrush(Qt.Dense7Pattern) # 定義實心畫刷樣式7
painter.setBrush(brush)
painter.drawRect(780, 15, 90, 60)
painter.end()


if __name__=="__main__":
app=QApplication(sys.argv)
p=Fillrect()
p.show()
sys.exit(app.exec_())


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM