当前位置: 首页 > wzjs >正文

了解做房产广告的网站宁波网站推广方式

了解做房产广告的网站,宁波网站推广方式,商务网站建设工程师是,廊坊网站建设推广经验摘要:掌握PyQt5绘图核心控件,轻松实现窗体绘图、文字渲染、几何图形绘制及图像加载。本文附带完整代码示例与效果图,助你快速上手GUI图形开发。 绘图基础:为什么需要这些控件? 在GUI开发中,绘图功能是数据…

摘要:掌握PyQt5绘图核心控件,轻松实现窗体绘图、文字渲染、几何图形绘制及图像加载。本文附带完整代码示例与效果图,助你快速上手GUI图形开发。

绘图基础:为什么需要这些控件?

在GUI开发中,绘图功能是数据可视化、游戏开发、图像编辑等场景的核心需求。PyQt5通过以下四大类实现绘图:

  • QPainter:绘图引擎,执行底层绘制操作
  • QPen:控制线条样式(颜色/粗细/虚线等)
  • QBrush:控制填充样式(纯色/渐变/图案)
  • QPixmap:图像加载与渲染
    📌 关键特性:所有绘图操作必须在paintEvent()事件中完成,通过begin()和end()方法包裹。

核心控件详解与实战

QPainter:绘图引擎

核心能力

def paintEvent(self, event):painter = QPainter(self)painter.begin(self) # 绘制操作...painter.end() 

常用方法速查表:

方法功能示例
drawText()文字渲染painter.drawText(rect, alignment, “文本”)
drawEllipse()绘制椭圆painter.drawEllipse(x, y, w, h)
fillRect()矩形填充painter.fillRect(rect, QColor(255,0,0))

文字绘制示例

import sys
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtGui import QPainter,QColor,QFont
from PyQt5.QtCore import Qtclass 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_())

运行效果

image

QPen:线条控制大师

6种预定义线型对比:

  • Qt.SolidLine:实线(默认)
  • Qt.DashLine:虚线
  • Qt.DotLine:点线
  • Qt.DashDotLine:点划线
  • Qt.DashDotDotLine:双点划线
  • Qt.CustomDashLine:自定义模式

自定义虚线技巧:

pen = QPen(Qt.red,  3)
pen.setStyle(Qt.CustomDashLine) 
pen.setDashPattern([5,  2, 1, 2])  # 5px实线+2px空白+1px实线+2px空白 

QBrush:填充艺术家

9种经典填充模式:

# 示例:创建不同填充样式的矩形 
patterns = [Qt.SolidPattern,      # 纯色填充 Qt.Dense5Pattern,     # 密集斜线 Qt.DiagCrossPattern,  # 交叉网格 Qt.HorPattern,        # 水平线 Qt.VerPattern,        # 垂直线 Qt.BDiagPattern       # 反斜线 
]

渐变填充进阶(需配合QLinearGradient):

gradient = QLinearGradient(0, 0, 100, 100)
gradient.setColorAt(0,  Qt.blue) 
gradient.setColorAt(1,  Qt.white) 
brush = QBrush(gradient)

QPixmap:图像处理专家

核心功能对比

方法与QImage区别适用场景
load()专为显示优化界面图片加载
scaled()保持宽高比缩放缩略图生成
save()支持压缩格式截图保存

图像加载最佳实践:

自适应标签大小的图像加载

pixmap = QPixmap("image.jpg") 
pixmap = pixmap.scaled( label.size(),  Qt.KeepAspectRatio,Qt.SmoothTransformation 
)
label.setPixmap(pixmap) 

性能优化建议

  • 双缓冲技术:通过QPixmap缓存绘制结果,避免闪烁
  • 局部重绘:使用update(QRect)而非全局刷新
  • 资源复用:重复使用的QPen/QBrush建议设为成员变量

完整项目示例

简易画板实现思路:

  • 继承QWidget重写mouseMoveEvent
  • 使用QPainterPath记录笔迹
  • 通过QPixmap保存画布状态
class SketchWidget(QWidget):def __init__(self):super().__init__()self.path  = QPainterPath()self.pen  = QPen(Qt.blue,  3, Qt.SolidLine)def mouseMoveEvent(self, event):self.path.lineTo(event.pos()) self.update() 

📢 互动提问:你在PyQt5绘图时遇到过哪些难题?欢迎在评论区留言讨论!

http://www.dtcms.com/wzjs/799756.html

相关文章:

  • 网站开发外包合同范本wordpress 外链转内链 页面
  • 南京网站建网站建设纳千网络
  • 汕头网站快速排名优化龙岗网站制作公司
  • 资深的家居行业网站开发国内seo服务商
  • 电子商务网站建设项目的阶段杭州互助盘网站开发
  • 中国教学网站足球网站模板
  • 无锡网站建设设计公司上市公司年报查询网站
  • 建设个招聘网站成都微信网站设计
  • 网站目标十大耐玩手机单机游戏
  • 建设项目环保竣工信息公开网站wordpress 设置网站目录权限
  • 高端做网站价格科技新闻最新消息10条
  • 专注大连网站建设企业微信网站怎么建设
  • 2.0网站线上建设什么意思浙江标力建设集团网站
  • 门户网站如何运营怎么在网上做广告
  • 用国外服务器做网站做那个免费观看视频网站
  • 成都网站seo公司开网店一年的费用
  • 网站建设总做总结门业网站 源码
  • 手机网站建设 苏州广告投放渠道
  • 提供徐州网站建设做外贸网站
  • 个人怎么进行网络广告营销关键词优化包年推广
  • 网站开发者工具下载网站备案到公司名称
  • 改动网站标题标题seo是什么意思
  • 临时网站怎么做找人做网站注意事项
  • 个人门户网站备案流程怎么建设自己的论坛网站
  • 建立网站 优帮云编程网站开发培训
  • 建立网站内容网页设计教程文字和图片
  • 网站开发赚钱吗 知乎wordpress ftp上传
  • 如何建设 linux 网站建网站需要什么设计专业
  • 网站建设需要的技术泉州关键词排名工具
  • 附近找装修公司wordpress优化分析