QPainter

介绍

QPainter类在QWiget(控件)上执行绘图操作,,它是一个绘制工具,为大部分图形界面提供了高度优化的函数,使QPainter类可以绘制从简单的直线到复杂的饼图等。
绘制操作在QWidget.paintEvent()中完成。绘制方法必须放在QtGui.QPainter对象的begin()和end()之间(低级别的图形绘制功能)。

方法

方法描述
begin()开始在目标设备上绘制
drawArc()在起始角度和最终角度之间画弧
drawFllipse()在一个矩形内画一个椭圆
drawLine(int x1,int y1,int x2,int y2)
绘制一条指定了端点坐标的线。绘制从(x1,y1)到(x2,y2)的直线并且设置当前画笔位置为(x2,y2)
drawPixmap()从图像文件中提取Pixmap并将其显示在指定的位置
drawPolygon()使用坐标数组绘制多边形
drawRect(int x,int y,int w,int h)以给定的宽度w和高度h从左上角坐标(x,y)绘制一个矩形
drawText()显示给定坐标处的文字
fillRect()使用QColor参数填充矩阵
setBrush()设置画笔风格
setPen()设置用于绘制的笔的颜色、大小和样式

设置画笔风格(枚举类)

枚举类型描述
Qt.NoPen没有线。比如QPainter.drawRect()填充,但没有绘制任何边界线
Qt.SolidLine一条简单的线
Qt.DashLine由一些像素分隔的短线
Qt.DotLine由一些像素分隔的点
Qt.DashDotLine轮流交替的点和短线
Qt.DashDotDotLine一条短线、两个点
Qt.MPenStyle画笔风格的掩码

绘制文字

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):
		painter = QPainter(self)        
		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 *  
from PyQt5.QtGui import *
from PyQt5.QtCore import Qt 

class Drawing(QWidget):
	def __init__(self, parent=None):
		super(Drawing, self).__init__(parent)
		self.resize(300, 200)  
		self.setWindowTitle("在窗体中画点")         

	def paintEvent(self, event):
		qp = QPainter()
		qp.begin(self)
		# 自定义画点方法
		self.drawPoints(qp)
		qp.end()
		
	def drawPoints(self,  qp):
		qp.setPen( Qt.red)
		size = self.size()
		
		for i in range(1000):
			# [-100, 100]两个周期的正弦函数图像
			x = 100 *(-1+2.0*i/1000)+ size.width()/2.0
			y = -50 * math.sin((x - size.width()/2.0)*math.pi/50) + size.height()/2.0
			qp.drawPoint(x, y)

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

使用展示

绘制点

后记

不知道怎么的,明明还有很多事情要做,但是总是静不下来。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值