PyQt5学习(二)绘制图形Qpainter

参考:https://blog.csdn.net/jia666666/article/category/7916211  


可以绘制:Qpainter

1,文本    2,各种图像(直线,点,椭圆,弧,扇形,多边形等) 3,图像

流程:(1)初始化 paniter=QPainter()  (2)开始 painter.begin() (3)绘制: painter.drawText(..) (4)绘制结束painter.end()

必须在painterEvent事件方法中绘制各种元素

2,绘制简单的文本

import sys
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtGui import QPainter,QColor,QFont
from PyQt5.QtCore import Qt

class Drawing(QWidget):
    def __init__(self,parent=None):
        super(Drawing, self).__init__(parent)
        self.setWindowTitle('在窗口绘制文字')
        self.resize(300,200)
        self.text='欢迎学习 PyQt5'


    def paintEvent(self,event):#不需要调用,会自动加载paintEvent
        painter=QPainter()
        painter.begin(self)
        #自定义绘制方法
        self.drawText(event,painter)
        painter.end()

    def drawText(self,event,qp):
        #设置画笔的颜色
        qp.setPen(QColor(168,34,3))
        #设置字体
        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_())

绘制各种图形:

弧,圆形,椭圆,矩形(正方形),多边形,绘制图像

import sys,math
from PyQt5.QtWidgets import QApplication,QMainWindow,QWidget,QVBoxLayout
from PyQt5.QtGui import QPainter,QColor,QFont,QPen,QPolygon,QImage
from PyQt5.QtCore import Qt,QRect,QPoint
class DrawDemo(QMainWindow):
    def __init__(self):
        super(DrawDemo, self).__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle('demo')
        self.setGeometry(300,300,300,200)
        widget=QWidget()
        self.setCentralWidget(widget)
        layout=QVBoxLayout()
        widget.setLayout(layout)
        self.text='helloword'
        self.size=self.size()
        self.show()


    def paintEvent(self,event):  #paintEvent 当窗口变化是直接调用,不需要调用函数
        painter=QPainter()

        painter.begin(self)
        #设置画笔和字体
        painter.setPen(QColor(2,1,3))
        painter.setFont(QFont('SimSun',12))

        '''绘制圆弧'''
        #(1)确定绘制区域
        rect=QRect(0,0,100,100) #前两个值为左上角的坐标,后两个值为宽度和高度
        #(2)在区域绘制图形
        painter.drawArc(rect,0,50*16)  #后面两个参数为为起始的角度,和结束的角度,为什么乘16,因为单位为alen,一度=16alen,也就是50度为50*16

        '''绘制圆'''
        rect=QRect(100,0,50,50)
        painter.setPen(Qt.red)
        painter.drawArc(rect,0,360*16)

        '''绘制带弦的弧'''
        rect = QRect(200, 0, 50, 50)
        painter.drawChord(rect,1,90*16)

        '''绘制扇形'''
        rect = QRect(0,50, 50, 50)
        painter.drawPie(rect,12,76*16)

        '''绘制椭圆'''
        painter.drawEllipse(0,100,60,50)   #前两个参数为起始坐标,后两个为宽和高,当后两个参数一样为圆

        '''绘制多边形'''
        #绘制一个正方形
        p1=QPoint(100,100)
        p2=QPoint(130,100)
        p3=QPoint(130,130)
        p4=QPoint(100,130)
        polygon=QPolygon([p1,p2,p3,p4])
        painter.drawPolygon(polygon)

        '''绘制一个图形'''
        #(1)读取图像
        img=QImage('python.png')
        #(2)进行绘制,对图片的大小压说为原来的二分之一
        rect=QRect(100,100,img.width()/3,img.height()/3)
        painter.drawImage(rect,img)



        painter.end()





if __name__=='__main__':
    app=QApplication(sys.argv)
    demo=DrawDemo()
    sys.exit(app.exec_())

Qpen:(钢笔)是一个基本的图形对象,用于绘制直线,曲线或者轮廓画出矩形,椭圆形,多边形个其他形状

#coding:gbk
import sys
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtGui import QPen,QPainter
from PyQt5.QtCore import Qt,QRect
class BrushDemo(QWidget):
	def __init__(self):
		super().__init__()
		self.initUI()
	def initUI(self):
		self.setWindowTitle('demo')
		self.setGeometry(300,300,300,200)
		self.show()
		
		
	def paintEvent(self,event):
		painter=QPainter()
		painter.begin(self)
		self.penDraw(painter)
		painter.end()
	def penDraw(self,painter):
		#设置钢笔
		pen=QPen(Qt.red,2,Qt.SolidLine)
		painter.setPen(pen)
		painter.drawLine(10,10,100,100)
      
		pen.setStyle(Qt.CustomDashLine)
		pen.setDashPattern([1,4,54])
		#当改变钢笔的塑性时要setPen
		painter.setPen(pen)
		painter.drawLine(30,30,40,30)
		

if __name__=='__main__':
	app=QApplication(sys.argv)
	
	demo=BrushDemo()
	sys.exit(app.exec_())

QBrush的使用:画刷是一个基本的图形对象,用于填充矩形,椭圆形,多边形等形状,QBrush有三种类型,预定义,过渡和纹理图案(相当于填充)

参考:https://blog.csdn.net/jia666666/article/details/81567313


QPixmap(像素映射):类用于绘图设备的图像显示,它可以作为一个QpainterDevice对象,也可以加载到一个控件中,通常是标签或按钮,用于在标签或按钮上显示图像

QPixmap可以读取的图像文件类型有BMP,GIF,JPG等

PyQt5学习(二)绘制图形Qpainter_第1张图片

 

 

 

 

 

 

你可能感兴趣的:(pyqt5)