已阅读5页,还剩78页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第章图形编程 GraphicProgramming 2 2 2 有图有真相 应用程序经常要用到图形 图像 动画统计软件证券分析软件教学软件可视化 将抽象事物和过程转变成视觉可见的 形象直观的图形图像表示柱状图 直方图 散点图 网络图 流程图 树 地图 图像 动画 3 计算可视化 科学可视化 将科学与工程计算 实验中的数据用直观的计算机图形图像呈现出来 以便人们理解数据 增强对事物现象的认识和对内在规律的洞察 数据可视化 将海量数据转化为数据图像 以帮助人们直观地观察数据 可以进而发展到更高层次的信息可视化和知识可视化 工程设计可视化 4 4 4 图形是复杂数据 包含的信息是复杂的圆形 圆心 元组 和半径 数值 内部及边界的颜色 RGB元组 图形操作是复杂的求面积 周长等传统计算 还有移动位置 改颜色等等 本章重点 理解计算机图形学的基本概念 掌握图形的基本编程方法熟悉图形对象及其方法掌握交互式图形编程方法了解图形绘制和图像处理的编程方法 6 Tkinter图形编程 1 导入模块importtkinter或fromtkinterimport 创建根窗口 作图窗口root Tk 7 7 7 Tkinter图形编程 2 创建画布c Canvas Canvas是画布类 利用它可以创建画布对象 在中创建画布 用来设置画布对象的数据 如高度 宽度 背景色等例如 在root中创建300 x200的白色画布c Canvas root width 300 height 200 bg white c pack 例 画矩形 画矩形c create rectangle x0 y0 x1 y1 或r c create rectangle 返回所画矩形的标识号常用选项outline 颜色fill 颜色state NORMAL HIDDENdash 线段长 间隔 8 例 画矩形 c create rectangle 50 50 200 100 1 r2 c create rectangle 80 70 240 150 tags rect 2 printr22 c itemconfig 1 fill black c itemconfig r2 fill grey outline white width 6 c delete r2 c move 1 50 50 c create rectangle 50 50 51 51 Tkinter画点 p1 10 10 p2 50 80 c create rectangle p1 p2 tags 3 xy 100 110 200 220 c create rectangle xy 9 层次化设计案例 graphics 有人在Tkinter之上设计了另一个图形模块graphics py因为Tkinter较复杂 初学者学起来有点难graphics将Tkinter的功能封装成了更易用的类这是非标准模块 需要自己下载 10 1简单的图形编程 图形用户界面 GUI GraphicalUserInterface 窗口 图标 按钮以及菜单等 Python的标准GUI Tkinter本书采用Tkinter中的图形库 graphics py 1简单的图形编程 导入图形模块 将graphics py文件放入主程序目录下 或者Python系统目录下 在Python提示符后输入导入图形命令 importgraphics创建图形窗口 由graphics模块中的GraphWin函数实现 Pyhton建立窗口的语句为 win graphics GraphWin 窗体的标题是 GraphicsWindow 1简单的图形编程 说明 GraphWin是一个窗体对象 销毁此对象 win close Python提供了另一个引用形式来避免频繁的引入graphcis库 fromgraphicsimport 用星号方法导入后 可以更简洁的创建窗体对象 win GraphWin 后面的图形程序例子中 均默认已经用from导入了全部graphics模块的方法 1简单的图形编程 像素图形窗口中的点的集合 点对象图形模块中最简单的对象 1简单的图形编程 实例 fromgraphicsimport p1 Point 100 100 p1 getX 100 p1 getY 100 p2 Point 150 80 win GraphWin p1 draw win p2 draw win 1简单的图形编程 输出结果 1简单的图形编程 绘制命令直线 圆 矩形 椭圆形 多边形以及文本实例 打开一个图形窗口 win GraphWin MyShapes 300 300 使用Rectangle对象绘制一个蓝色的方形 rect Rectangle Point 100 100 Point 220 220 rect setFill blue rect draw win 1简单的图形编程 使用Line对象绘制一条线 line Line Point 80 150 Point 270 150 line draw win 绘制一个以点 260 220 为中心 半径为35的圆形 center Point 260 220 circ Circle center 35 circ draw win 1简单的图形编程 使用Oval物体绘制一个椭圆 oval Oval Point 20 30 Point 266 85 oval draw win 在椭圆中放入一个文本标签 label Text Point 100 50 HelloWorld label draw win 1简单的图形编程 输出结果 2图形对象 图形模块 面向对象的思想 对象包括属性和方法对象都是某个类的实例类定义了实例包含的属性和方法 22 对象 对象 集数据与操作于一身 对象知道一些信息对象能对那些信息进行处理计算 向对象发出请求操作的消息 面向对象 软件系统由各种对象组成 对象之间通过消息进行交互 图形编程工具通常都是面向对象实现的 如Python标准模块Tkinter 2图形对象 创建点对象可以使用如下构造函数语句 p Point 50 60 Point类的构造函数两个参数创建点对象的x y坐标 大多数类属性被设为默认值 2图形对象 对象的方法一个对象所响应的消息集合参数的数量和类型根据需要来确定 无参数的方法 p getX p getY 访问对象实例变量的内部属性 2图形对象 有参数的方法 p move 10 0 改变对象实例变量的属性值来改变该对象的状态 有些方法用到的参数本身就是复杂对象 circ Circle Point 100 100 30 win GraphWin circ draw win 2图形对象 注意有时两个不同的变量可能表示同一个对象 更改一个变量来改变对象内容的同时另一个变量也会变化 示例假设写一个画笑脸的程序 希望绘制的两个眼睛间隔20单位长度 眼睛绘制代码如下 leftEye Circle Point 80 50 5 leftEye setFill yellow leftEye setOutline red rightEye leftEyerightEye move 20 0 2图形对象 程序的运行结果 以上代码是无效的只创建了一个Circle对象 2图形对象 解决方法1为左右眼分别创建两个不同的圆 leftEye Circle Point 80 50 5 leftEye setFill yellow leftEye setOutline red rightEye Circle Point 100 50 5 rightEye setFill yellow rightEye setOutline red 2图形对象 程序的运行结果 虽然解决了问题 但代码重复 如果要修改眼睛的外观 必须确保两只眼睛同时改变 2图形对象 解决方法2利用图形库中clone 方法来复制对象 使用clone 创建两个圆leftEye Circle Point 80 50 5 leftEye setFill yellow leftEye setOutline red rightEye leftEye clone rightEyeisanexactcopyoftheleftrightEye move 20 0 31 31 31 程序的用户界面 程序中与用户进行交互的部分用户通过UI向程序输入数据或者请求程序执行特定任务程序通过UI向用户显示各种信息UI应该是用户友好的两类UI命令行界面图形界面 GUI 32 32 事件驱动 GUI程序的执行流程取决于与用户的实时交互例如 Word程序的执行事件驱动编程普通程序的执行 启动 做事 终止事件驱动程序的执行 启动 事件循环等待事件发生 然后处理程序的终止也是由特定事件 如关闭窗口事件 引起的 33 33 基本概念 事件 例如点击鼠标 按下键盘等 事件处理程序 对事件进行处理的代码 事件驱动编程 一种编程范型程序有一个事件循环事件监测OS功能 由工具包提供支持事件处理应用程序员只需编写自己的事件处理程序 3交互式图形编程 图形接口用于程序的输入和输出 事件驱动点击按钮 选择菜单栏里的选项 以及在屏幕文本框中输入文字 图形模块隐藏了底层事件的处理机制 提供了两个简单的方法获得用户在窗口中的输入 捕捉鼠标点击处理文本输入 3交互式图形编程 1 捕捉鼠标点击GraphWin类中的getMouse 方法 click pyfromgraphicsimport defmain win GraphWin ClickMe foriinrange 10 p win getMouse print Youclickedat p getX p getY main 3交互式图形编程 运行后的一组输出结果 Youclickedat 7339Youclickedat 15734Youclickedat 17892Youclickedat 50103Youclickedat 33139Youclickedat 131156Youclickedat 15199Youclickedat 20354Youclickedat 6764Youclickedat 1257 3交互式图形编程 下面的例子是一个交互式程序 polygon pywfromgraphicsimport win GraphWin Drawapolygon 300 300 win setCoords 0 0 0 0 300 0 300 0 message Text Point 150 20 Clickonfivepoints message draw win 3交互式图形编程 获得多边形的5个点p1 win getMouse p1 draw win p2 win getMouse p2 draw win p3 win getMouse p3 draw win p4 win getMouse p4 draw win p5 win getMouse p5 draw win 3交互式图形编程 使用Polygon对象绘制多边形polygon Polygon p1 p2 p3 p4 p5 polygon setFill peachpuff polygon setOutline black polygon draw win 等待响应鼠标事件 退出程序message setText Clickanywheretoquit win getMouse 3交互式图形编程 程序的运行和结果 3交互式图形编程 输出提示信息使用Text文本对象Text Point 150 20 Clickonfivepoints message draw win 更新提示在程序的倒数第二行 使用setText方法实现 message setText Clickanywheretoquit 3交互式图形编程 2 处理文本输入输入对象Entry获取窗口中的键盘输入 Entry对象在窗口中创建一个文本框使用setText 和getText 方法 Entry对象的内容可以被用户修改 3交互式图形编程 温度转换程序 tempConvert gui pyw 为温度转换程序绘制图形窗口 graphicalinterface fromgraphicsimport win GraphWin CelsiusConverter 400 300 win setCoords 0 0 0 0 3 0 4 0 3交互式图形编程 绘制接口Text Point 1 3 CelsiusTemperature draw win Text Point 1 1 FahrenheitTemperature draw win input Entry Point 2 3 5 input setText 0 0 input draw win output Text Point 2 1 output draw win button Text Point 1 5 2 0 ConvertIt button draw win Rectangle Point 1 1 5 Point 2 2 5 draw win 3交互式图形编程 等待鼠标点击win getMouse 转换输入celsius eval input getText fahrenheit 9 0 5 0 celsius 32 显示输出 改变按钮output setText fahrenheit button setText Quit 等待响应鼠标点击 退出程序win getMouse win close 3交互式图形编程 程序运行显示的窗口界面 3交互式图形编程 用户输入后的程序窗口界面 使用图形库中的选项更改窗口部件的颜色 尺寸以及线条宽度 4图形库的应用方法 1 GraphWin对象及方法GraphWin屏幕上的窗体对象 并在此窗体上绘制图像 可以定义任意数量的窗体创建新窗口GraphWin title width height 参数是可选的默认标题是 GraphicsWindow 默认大小为200 200 4图形库的应用方法 GraphWin对象的常用方法 4图形库的应用方法 2 图形对象及方法图形对象点 线段 圆 椭圆 矩形 多边形以及文本 默认初始化黑色边框没有被填充 4图形库的应用方法 图形对象通用方法 4图形库的应用方法 Point对象方法 4图形库的应用方法 Line对象方法 4图形库的应用方法 Circle对象方法 4图形库的应用方法 Rectangle对象方法 4图形库的应用方法 Oval对象方法 4图形库的应用方法 Polygon对象方法 4图形库的应用方法 Text对象方法 4图形库的应用方法 3 图形颜色颜色由字符串指定 color rgb red green blue 函数通过设定颜色数值来获得想要的颜色三个参数应该为0 255范围内的整数返回一个字符串 4图形库的应用方法 对温度转换程序进行修改如下 tempConvert gui pyw 用窗口颜色显示温度转换的结果fromgraphicsimport defconvert input celsius eval input getText 输入转换fahrenheit 9 0 5 0 celsius 32returnfahrenheitdefcolorChange win input cnum eval input getText weight cnum 100 0 4图形库的应用方法 newcolor color rgb 255 weight 66 150 1 weight 255 1 weight win setBackground newcolor defmain win GraphWin CelsiusConverter 400 300 win setCoords 0 0 0 0 3 0 4 0 4图形库的应用方法 绘制输入接口Text Point 1 3 CelsiusTemperature draw win Text Point 2 2 7 Pleaseinput0 0 100 0 draw win Text Point 1 1 FahrenheitTemperature draw win input Entry Point 2 3 5 input setText 0 0 input draw win output Text Point 2 1 output draw win button Text Point 1 5 2 0 ConvertIt button draw win rect Rectangle Point 1 1 5 Point 2 2 5 rect draw win 4图形库的应用方法 等待鼠标点击win getMouse result convert input 转换输入output setText result 显示输出 改变颜色colorChange win input 改变按钮字体button setText Quit 等待点击事件 退出程序win getMouse win close main 4图形库的应用方法 程序的运行及结果温度转换程序窗口 4图形库的应用方法 程序的运行及结果颜色信息的窗口 5示例程序1 最小二乘法拟合曲线 5示例程序1 最小二乘法拟合曲线 示例对随机生成的15个点使用最小二乘法拟合曲线 该问题的IPO 输入 随机生成15个坐标点处理 最小二乘法拟合曲线输出 绘制拟合曲线图 5示例程序1 最小二乘法拟合曲线 scipy库最小二乘函数leastsq Numpy库矩阵计算函数matplotlib库绘图函数 下载地址 5示例程序1 最小二乘法拟合曲线 最小二乘法拟合曲线的代码 fittedCurve pyfrompylabimport pylab是matplotlib库中的一个子模块fromnumpyimport fromscipy optimizeimportleastsq 最小二乘法的函数 拟合函数deffun2 p x f poly1d p returnf x 5示例程序1 最小二乘法拟合曲线 偏差函数 离散值和拟合函数之间的差 p为拟合需要的系数deferr p x y returny fun2 p x xmin 0 xmax 10 5示例程序1 最小二乘法拟合曲线 随机选取15个点x linspace xmin xmax 15 画图时连续的点x1 linspace xmin xmax 1000 x对应的随机离散值y1 x random randn len x 随机产生一组次数为10的多项式参数作为初始参数值p0 random randn 10 5示例程序1 最小二乘法拟合曲线 利用leastsq最小二乘函数进行数据拟合 err为计算误差的函数 p0为拟合参数的初始值 args为需要拟合的实验数据 maxfev是最多调用函数的次数result leastsq err p0 args x y1 maxfev 1000 输出拟合参数print 拟合参数 result 0 5示例程序1 最小二乘法拟合曲线 绘制离散值点和拟合曲线title Least squaresfitedcurvetodiscretedata plot x y1 ro label Data 绘制离散点plot x1 fun2 result 0 x1 label Fittedcurve 绘制曲线legend 图的标注show return0 5示例程序1 最小二乘法拟合曲线 程序运行的结果 5示例程序1 最小二乘法拟合曲线 注意 matplotlib是python第三方绘图库将python安装目录中的six py文件拷贝到site packages文件夹中确认Python安装包中包含lib文件dateutil lib和pyparsing lib 6示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年健康食品产业布局可行性研究报告及总结分析
- 2025年智能家居系统整体解决方案可行性研究报告及总结分析
- 2024年泰安岱岳中小学教师招聘真题
- 2025年清洁空气城市监测系统可行性研究报告及总结分析
- 2025年罗非鱼养殖技术合作协议
- 2025年特色小镇发展战略研究可行性报告
- 2025年 灌南县事业单位工作人员聘考试笔试试题含答案
- 2025年老年食堂服务协议
- 2025年人工智能医疗服务应用可行性研究报告及总结分析
- 2025年老年人智能化生活服务平台可行性研究报告及总结分析
- 幼儿园中的自然教育对孩子的影响
- 植物生产类专业职业生涯规划书
- 中国胃食管反流病诊疗规范(2023版)解读
- 高中学生学籍表模板(范本)
- 膳食营养指导和疾病预防(卢世琰)课件
- 办公楼建筑能源管理平台技术方案书
- 河南省铭玮昊化工科技有限公司年产1000吨溴硝醇、100吨磺酰胺、200吨叔丁酯项目环境影响报告书
- 灭火器检查记录表模板实用文档
- 《赢利 未来10年的经营能力》读书笔记PPT模板思维导图下载
- 2023年成都交子金融控股集团有限公司招聘考试备考题库及答案解析
- YS/T 337-2009硫精矿
评论
0/150
提交评论