QPainter绘图
一、QPen主要功能
QPen用于绘图时设置线条,主要包括线宽,线型、颜色等。
QPen的主要接口函数
函数原型 | 功能 |
---|---|
setColor(color) | 设置画笔颜色,即线条颜色 |
setWidth(width) | 设置线条宽度为width个像素 |
setStyle(style) | 设置线条样式 |
二、QBrush主要功能
QBrush的主要接口函数
函数原型 | 功能 |
---|---|
setColor(color) | 设置画刷颜色,实体填充色 |
setStyle(style) | 设置画刷样式 |
setTexture(pixmap) | 设置一个Qpixmap类型的图片pixmap作为画刷的图片 |
代码如下:
ui_1024.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Widget(object):
def setupUi(self, Widget):
Widget.setObjectName("Widget")
Widget.resize(573, 567)
self.retranslateUi(Widget)
QtCore.QMetaObject.connectSlotsByName(Widget)
def retranslateUi(self, Widget):
_translate = QtCore.QCoreApplication.translate
Widget.setWindowTitle(_translate("Widget", "渐变填充"))
ui_1024_main.py
import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtCore import Qt, QRect, QPoint
from PyQt5.QtGui import QPainter, QPen, QRadialGradient, QLinearGradient, QColor
from ui_1024 import Ui_Widget
class QmyDD(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_Widget()
self.ui.setupUi(self)
# 在paintEvent()中,一般在绘图时会开启反走样以防锯齿,但是在单纯画直线时,要关闭反走样,否则画出来的直线会非常模糊并且会变粗
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing, False)
pen = QPen()
painter.setPen(pen)
w = self.width()
h = self.height()
radial = QRadialGradient(w/10, h/10, w/4, w/10, h/10)
radial.setColorAt(0.1, Qt.yellow)
radial.setColorAt(1, Qt.blue)
painter.setBrush(radial)
rect1 = QRect(w/10, h/10, w/3, h/5)
painter.drawRect(rect1)
# QLinearGradient类构造函数指定渐变(起点,终点)
line = QLinearGradient(QPoint(100, 100), QPoint(300, 300))
# 成员函数setColorAt()设置起点和终点之间要显示的颜色
line.setColorAt(0.1, Qt.green)
line.setColorAt(0.8, Qt.blue)
# 设置显示模式
line.setSpread(QLinearGradient.RepeatSpread)
# QPainter.setPen(QPen(QColor(100,100,50), 2))
painter.setBrush(line)
# rect2 = QRect(w / 2, h / 10, w / 3, h / 5)
rect2 = QRect(200, 200, 180, 180)
painter.drawEllipse(rect2)
if __name__ == "__main__":
app = QApplication(sys.argv)
DD = QmyDD()
DD.show()
sys.exit(app.exec_())