绘图QPainter

绘图要在paintEvent()方法中实现。在QPainter对象的begin()与end()方法间编写绘图代码。它会在控件或其他图形设备上进行低级的图形绘制

画笔样式Penstyle

Qt.Nopen      没有线。比如QPainter.drawRect()填充,但没有绘制任何边界线

Qt.SolidLine  一条简单的线    

Qt.DashLine   有一些像素分割的线    

Qt.DotLine  有一些像素分割的点    

Qt.DashDotLine   轮流交替的点和短线      

Qt.DashDotDotLine  一条短线,两个点    

Qt.MpenStyle   画笔风格的掩码     

Qt.CustomDashLine   自定义样式   

  

 三种笔端样式:

 

线条连接方式,一共有三种:

 

 1 import sys
 2 from PyQt5.QtCore import Qt
 3 from PyQt5.QtGui import QPainter, QPen
 4 from PyQt5.QtWidgets import QApplication, QWidget
 5 
 6 
 7 class Demo(QWidget):
 8     def __init__(self):
 9         super(Demo, self).__init__()
10         self.resize(600, 600)
11 
12         self.pen1 = QPen()  # 实例化画笔对象
13         self.pen1.setColor(Qt.green)  #设置画笔颜色
14         self.pen2 = QPen(Qt.SolidLine)  #实例化画笔对象.参数:画笔样式
15         self.pen2.setWidth(6) #设置画笔粗细
16         #传入整型值,默认为1。如果要传入浮点型的话可使用setWidthF()
17         # self.pen2.setWidthF(3.3)
18 
19         self.pen3 = QPen(Qt.DashLine)
20         self.pen4 = QPen(Qt.DotLine)
21         self.pen5 = QPen(Qt.DashDotLine)
22         self.pen6 = QPen(Qt.DashDotDotLine)
23         self.pen7 = QPen(Qt.CustomDashLine)
24         #自定义样式的话,我们之后还需要调用setDashPattern()方法来设置虚线模式。只要传入一个迭代器即可,这里我们传入[6, 2, 18, 2](元素数量为偶数)这个列表,意思是我们想将第一个虚线长度设为6个像素,再设置空白间隔长度为2个像素,之后再画一条长度为18像素的虚线,最后再加个长度为2像素的空白间隔,如此循环
25         self.pen7.setDashPattern([6, 2, 18, 2])
26 
27         self.pen8 = QPen(Qt.SolidLine)
28         self.pen8.setWidth(6)
29         self.pen8.setCapStyle(Qt.RoundCap)  #设置笔端样式
30 
31         self.pen9 = QPen(Qt.SolidLine)
32         self.pen9.setWidthF(6)
33         self.pen9.setJoinStyle(Qt.MiterJoin)  #设置线条连接方式
34 
35     def paintEvent(self, QPaintEvent):  #绘画事件
36         painter = QPainter(self)  # 实例化一个画布
37         painter.setPen(self.pen1)  #给画布设置画笔
38         painter.drawLine(100, 10, 500, 10) #画直线。参数:两个点的坐标
39         #绘制一条指定了端点坐标的线,绘制从(x1,y1)到(x2,y2)的直线并且设置当前画笔位置为(x2,y2)
40         # painter.setPen(self.pen2)
41         # painter.drawLine(100, 30, 500, 30)
42         #
43         # painter.setPen(self.pen3)
44         # painter.drawLine(100, 50, 500, 50)
45         #
46         # painter.setPen(self.pen4)
47         # painter.drawLine(100, 70, 500, 70)
48         #
49         # painter.setPen(self.pen5)
50         # painter.drawLine(100, 90, 500, 90)
51         #
52         # painter.setPen(self.pen6)
53         # painter.drawLine(100, 110, 500, 110)
54         #
55         # painter.setPen(self.pen7)
56         # painter.drawLine(100, 130, 500, 130)
57         #
58         # painter.setPen(self.pen8)
59         # painter.drawLine(100, 150, 500, 150)
60 
61         painter.setPen(self.pen2)
62         painter.drawRect(100, 50, 400, 100)  # 画矩形
63         #参数1 参数2:矩形左上角坐标
64         #参数3 参数4 宽度  高度
65 
66 if __name__ == '__main__':
67     app = QApplication(sys.argv)
68     demo = Demo()
69     demo.show()
70     sys.exit(app.exec_())

 setBrush()   设置画笔的风格

 

猜你喜欢

转载自www.cnblogs.com/liming19680104/p/10400399.html