Qt提供的画刷风格:
Qt.TexturePattern 自定义图像画刷
线性渐变 QLinearGradientPattern
QLinearGradient需要传入的参数为需要进行渐变的区域坐标,那其实只要把我们在paintEvent()事件函数中要绘制的矩形区域的坐标输入即可(输入两点坐标,若输入对角坐标,则在对角方向上渐变,笔者这里就是输入的左上和右下对角坐标)
径向渐变QRadialGradientPattern
锥形渐变QConicalGradientPattern
1 import sys
2 from PyQt5.QtCore import Qt
3 from PyQt5.QtGui import QPainter, QBrush, QPixmap, QLinearGradient, QRadialGradient, QConicalGradient
4 from PyQt5.QtWidgets import QApplication, QWidget
5
6 class Demo(QWidget):
7 def __init__(self):
8 super(Demo, self).__init__()
9 self.resize(600, 600)
10
11 self.brush1 = QBrush(Qt.SolidPattern) # 实例化一个画刷。参数:画刷样式
12 #画刷默认的样式为Qt.NoBrush
13
14 self.brush2 = QBrush(Qt.Dense6Pattern)
15 self.brush2.setColor(Qt.red) #设置画刷颜色
16
17 gradient1 = QLinearGradient(200, 200, 300, 300) #实例化一个线性渐变画刷样式
18 #QLinearGradient需要传入的参数为需要进行渐变的区域坐标,那其实只要把我们在paintEvent()事件函数中要绘制的矩形区域的坐标输入即可(输入两点坐标,若输入对角坐标,则在对角方向上渐变,笔者这里就是输入的左上和右下对角坐标)
19
20 gradient1.setColorAt(0.2, Qt.red)#设置渐变位置和渐变色
21 #第一个参数代表颜色开始渐变的位置(大小范围为0-1),第二个参数为颜色值。比如gradient1.setColorAt(0.2, Qt.red)的意思就是说红色在渐变区域0.2(即20%)处的位置开始渐变到下一种颜色
22 gradient1.setColorAt(0.8, Qt.green)
23 gradient1.setColorAt(1, Qt.blue)
24 self.brush3 = QBrush(gradient1)#实例化画刷,样式:渐变色
25
26 gradient2 = QRadialGradient(350, 350, 50, 350, 350) #实例化一个径向渐变画刷样式
27 #前两个参数为中心点坐标,50为半径(渐变范围),后两个为焦点坐标???
28 gradient2.setColorAt(0, Qt.red)
29 gradient2.setColorAt(1, Qt.blue)
30 self.brush4 = QBrush(gradient2)
31
32 gradient3 = QConicalGradient(450, 450, 0) #实例化一个锥形渐变画刷样式
33 #前两个值为中心点坐标,最后一个为首个颜色开始处的角度值(范围为0-360)
34 gradient3.setColorAt(0, Qt.red)
35 gradient3.setColorAt(1, Qt.blue)
36 self.brush5 = QBrush(gradient3)
37
38 self.brush6 = QBrush(Qt.TexturePattern) #自定义图像画刷
39 self.brush6.setTexture(QPixmap('images/大象.png')) #设置图像
40
41 def paintEvent(self, QPaintEvent):
42 painter = QPainter(self)
43 painter.setBrush(self.brush1) # 给画布设置画刷
44 painter.drawRect(0, 0, 100, 100)
45
46 painter.setBrush(self.brush2)
47 painter.drawRect(100, 100, 100, 100)
48
49 painter.setBrush(self.brush3)
50 painter.drawRect(200, 200, 100, 100)
51
52 painter.setBrush(self.brush4)
53 painter.drawRect(300, 300, 100, 100)
54
55 painter.setBrush(self.brush5)
56 painter.drawRect(400, 400, 100, 100)
57
58 painter.setBrush(self.brush6)
59 painter.drawRect(500, 500, 100, 100)
60
61 if __name__ == '__main__':
62 app = QApplication(sys.argv)
63 demo = Demo()
64 demo.show()
65 sys.exit(app.exec_())
qp.setBrush(QColor(200, 0, 0)) #给画布设置画刷颜色