PyQt5绘图API大全
1、绘图API:绘制文本
#1.文本 2.各种图形 3.图像
#QPainter painter=QPainter() painter.begin() painter.end() painter.drawtext() 必须在painevent事件方法中绘制各种元素 import sys
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter,QColor,QFont
class Drawtext(QWidget):
def __init__(self):
super(Drawtext,self).__init__()
self.setWindowTitle("在窗口上面绘制文直线文本")
self.resize(500,200)
self.text="Python从菜鸟到高手" def paintEvent(self,event):
painter=QPainter(self) #定义一个画布
painter.begin(self) #初始化画布属性
print("绘图函数已经调用")
painter.setPen(QColor(150,43,5)) #设置画笔的属性颜色
painter.setFont(QFont("SimSun",25)) #设置绘画显示字体 painter.drawText(event.rect(),Qt.AlignCenter,self.text) #设置绘画区域范围
painter.end()
if __name__=="__main__":
app=QApplication(sys.argv)
p=Drawtext()
p.show()
sys.exit(app.exec_())

2、绘制各种图形(圆,矩形,多边形,各种函数图形,椭圆,圆,弧线等)
import sys,math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class Drawall(QWidget):
def __init__(self):
super(Drawall,self).__init__()
self.setWindowTitle("绘制各种图形")
self.resize(300,600)
def paintEvent(self,event):
painter=QPainter(self) #先定义画布
painter.begin(self) #初始化画布 painter.setPen(Qt.blue) #绘制弧线
rect=QRect(0,10,100,100) #确定画出圆弧的正方形区域(x左上角横坐标,y左上角纵坐标,length矩形长,width矩形宽)
#alen参数:1个alen长度等于1/16度
painter.drawArc(rect,0,90*16) #绘制圆弧的角度范围(矩形区域,起始角度,终止角度)
#通过弧线来绘制圆
painter.setPen(Qt.red)
painter.drawArc(120,10,100,100,0,360*16) #圆的半径大小可以通过设置矩形区域的长宽大小来进行设置
#绘制带弦的弧线
painter.drawChord(10,120,100,100,12,130*16)
# 绘制扇形
painter.drawPie(10,240,100,100,12,130*16)
#绘制椭圆
painter.drawEllipse(120,120,100,150) #绘制多边形(定义多边形的顶点坐标)
point1=QPoint(140,380)
point2=QPoint(270,420)
point3=QPoint(290,512)
point4=QPoint(290,588)
point5=QPoint(200,533)
polygon=QPolygon([point1,point2,point3,point4,point5])
painter.drawPolygon(polygon) #绘制图像
image=QImage("./image-1/1-1.jpg")
rect=QRect(10,400,image.width()/15,image.height()/15) #在某个定义好的区域画出图像大小
painter.drawImage(rect,image) #绘制图像函数参数设置
painter.end() if __name__=="__main__":
app=QApplication(sys.argv)
p=Drawall()
p.show()
sys.exit(app.exec_())

3、绘制像素点正弦曲线
import sys,math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import Qt
class Drawpoints(QWidget):
def __init__(self):
super(Drawpoints,self).__init__()
self.setWindowTitle("窗口像素点绘制正弦曲线")
self.resize(300,200)
def paintEvent(self,event):
painter=QPainter(self) painter.begin(self)
painter.setPen(Qt.blue)
size=self.size() for i in range(100):
x=100*(-1+2.0*i/100)+size.width()/2.0 #将主窗口的宽度中心作为x周轴原点
y=-50*math.sin((x-size.width()/2.0)*math.pi/50)+size.height()/2.0 #将主窗口的高度中心作为x周轴原点
painter.drawPoint(x,y) painter.end() if __name__=="__main__":
app=QApplication(sys.argv)
p=Drawpoints()
p.show()
sys.exit(app.exec_())

4、绘制不同类型的直线,主要是指对于直线的样式的设置,对于pen样式的设置
import sys,math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import Qt
class Drawmultiline(QWidget):
def __init__(self):
super(Drawmultiline,self).__init__()
self.setWindowTitle("设置pen的样式")
self.resize(300,300)
def paintEvent(self,event):
painter=QPainter(self) painter.begin(self)
pen=QPen(Qt.red,2,Qt.SolidLine) #设置实线样式直线
painter.setPen(pen)
painter.drawLine(20,40,250,40) pen.setStyle(Qt.DashLine) #设置宽虚线样式直线
painter.setPen(pen)
painter.drawLine(20, 80, 250, 80) pen.setStyle(Qt.DashDotDotLine) # 设置双点划线线样式直线
painter.setPen(pen)
painter.drawLine(20, 120, 250, 120) pen.setStyle(Qt.DashDotLine) # 设置单点划线线样式直线
painter.setPen(pen)
painter.drawLine(20, 160, 250, 160) pen.setStyle(Qt.DotLine) # 设置窄虚线样式直线
painter.setPen(pen)
painter.drawLine(20, 200, 250, 200) pen.setStyle(Qt.CustomDashLine) # 自定义样式直线,可以使用列表中数值比例来进行设置
pen.setDashPattern([1,10,5,4])
painter.setPen(pen)
painter.drawLine(20, 240, 250, 240) size=self.size()
painter.end() if __name__=="__main__":
app=QApplication(sys.argv)
p=Drawmultiline()
p.show()
sys.exit(app.exec_())

5、用画刷填充区域
import sys,math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class Fillrect(QWidget):
def __init__(self):
super(Fillrect,self).__init__()
self.setWindowTitle("用画刷填充区域")
self.resize(900,600) def paintEvent(self,event):
painter=QPainter(self) #先定义画布
painter.begin(self) #初始化画布
brush=QBrush(Qt.SolidPattern) #定义实心画刷样式
painter.setBrush(brush)
painter.drawRect(10,15,90,60) brush = QBrush(Qt.Dense1Pattern) # 定义实心画刷样式1
painter.setBrush(brush)
painter.drawRect(120, 15, 90, 60) brush = QBrush(Qt.Dense2Pattern) # 定义实心画刷样式2
painter.setBrush(brush)
painter.drawRect(230, 15, 90, 60) brush = QBrush(Qt.Dense3Pattern) # 定义实心画刷样式3
painter.setBrush(brush)
painter.drawRect(340, 15, 90, 60)
brush = QBrush(Qt.Dense4Pattern) # 定义实心画刷样式4
painter.setBrush(brush)
painter.drawRect(450, 15, 90, 60)
brush = QBrush(Qt.Dense5Pattern) # 定义实心画刷样式5
painter.setBrush(brush)
painter.drawRect(560, 15, 90, 60)
brush = QBrush(Qt.Dense6Pattern) # 定义实心画刷样式6
painter.setBrush(brush)
painter.drawRect(670, 15, 90, 60)
brush = QBrush(Qt.Dense7Pattern) # 定义实心画刷样式7
painter.setBrush(brush)
painter.drawRect(780, 15, 90, 60)
painter.end() if __name__=="__main__":
app=QApplication(sys.argv)
p=Fillrect()
p.show()
sys.exit(app.exec_())

PyQt5绘图API的更多相关文章

  1. Html5 学习系列(五)Canvas绘图API快速入门(2)

    Canvas绘图API Demos 上一篇文章中,笔者已经给大家演示了怎么快速用Canvas的API绘制一个矩形出来.接下里我会在本文中给各位介绍Canvas的其他API:绘制线条.绘制椭圆.绘制图片 ...

  2. Html5 学习系列(五)Canvas绘图API快速入门(1)

    引言:Canvas绘图API快速入门 在接触HTML5的初学者包括我都在很多地方见到非常炫的一些页面,甚至好多学习HTML5的开发者都是冲着Web端的页游去的,那么HTML5那么绚丽的页面效果以及游戏 ...

  3. 引言:Canvas绘图API快速入门

    引言:Canvas绘图API快速入门 在接触HTML5的初学者包括我都在很多地方见到非常炫的一些页面,甚至好多学习HTML5的开发者都是冲着Web端的页游去的,那么HTML5那么绚丽的页面效果以及游戏 ...

  4. AS3.0绘图API

    AS3.0绘图API: /** * * *-------------------* * | *** 绘图API *** | * *-------------------* * * 编辑修改收录:fen ...

  5. canvas绘图API详解

    canvas绘图API详解 1.context的状态 矩阵变换属性 当前剪辑区域 context的其他状态属性: strokeStyle, fillStyle, globalAlpha, lineWi ...

  6. html5 canvas常用api总结(二)--绘图API

    canvas可以绘制出很多奇妙的样式和美丽的效果,通过几个简单的api就可以在画布上呈现出千变万化的效果,还可以制作网页游戏,接下来就总结一下和绘图有关的API. 绘画的时候canvas相当于画布,而 ...

  7. Cocos2d-x 3.2学习笔记(三)学习绘图API

    关于cocos2d-x 3.2 版本的绘图方法有两种 1.使用DrawNode类绘制自定义图形. 2.继承Layer类重写draw()方法. 以上两种方法都可以绘制自定义图形,根据自己的需要选择合适的 ...

  8. cocos2d-x 3.2 DrawNode 绘图API

    关于Cocos2d-x 3.x 版本的绘图方法有两种: 1.使用DrawNode类绘制自定义图形. 2.继承Layer类重写draw()方法. 以上两种方法都可以绘制自定义图形,根据自己的需要选择合适 ...

  9. canvas 绘图api的位置问题

    很久没碰canvas了,今天因为canvas绘图的为之问题浪费了一些时间. 我们知道canvas的默认宽高是300X150嘛. 实际使用的时候当然是自定义一个高宽啦. 通常我们会习惯性地在js中通过c ...

随机推荐

  1. Educational Codeforces Round 76 (Rated for Div. 2) C. Dominated Subarray

    Let's call an array tt dominated by value vv in the next situation. At first, array tt should have a ...

  2. egg.js 配置cors跨域

    1.egg简述 Egg.js,为企业级框架和应用而生,是阿里开源的企业级 Node.js 框架. 2.特点 Egg 奉行『约定优于配置』,按照一套统一的约定进行应用开发,团队内部采用这种方式可以减少开 ...

  3. nginx-vue项目在window下的部署

    主机->操作系统->window(.net)/Linux->tomcat/nginx(软件反向代理) 1.vue项目打包到dist文件夹(之后把dist文件夹放到服务器就可以了) n ...

  4. 【网页浏览】怀旧xp画图网页版

    非常古老的WindowsXP画图工具 传送链接

  5. fader

    fader在音频处理中是比较基础的处理.通常用于平滑的调节音量,或是音频的渐入和渐出效果. 比较常见的fader有line和cubic线型的fader. line fader即fader的渐变过程是线 ...

  6. [Note]后缀自动机

    后缀自动机 代码 #include <cstdio> #include <algorithm> #include <cstring> const int M = 1 ...

  7. vue中父组件向子组件传值问题

    问题:当父组件传值给子组件echarts时,发现子组件获取的props为空,刚开始以为是钩子函数放错了地方,后来发现从mounted和created都不行.当在父组件data定义传递的数据的时候子组件 ...

  8. bitset 位运算

    1. 判断一个数是否是2的方幂n > 0 && ((n & (n - 1)) == 0 ) 解释((n & (n-1)) == 0): 如果A&B==0, ...

  9. Refusing to install package with name "webpack" under a package

    最近学习webpack 知识时 下载依赖结果报了这个错 查阅资料后发现是 这个name 不能使用所需要安装包的名字! 换为其他之后 再次操作命令 就没问题了

  10. 关于AutoCompleteTextView的用法:根据输入的自动匹配关键词