有图有真相 应用程序经常要用到图形/图像/动画 可视化:将抽象事物和过程转变成视觉可见的、形象直观的图形图像表示 统计软件 证券分析软件

Slides:



Advertisements
Similar presentations
第三节 函数的微分及其应用 一、微分的概念 二、微分的几何意义 三、微分的基本公式及其运算法则 四、微分在近似计算中的应用 五、小结、作业.
Advertisements

第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
自定义汇总报表 演示 作者:栗川.
计算机编程导论 -Python语言 第5讲 图形编程 讲课教师:常姗
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
UI(用户界面)集训班 Illustrator 高级班.
PRESENTED BY OfficePLUS
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
图形编程.
Overview of Python Visualization Tools
ACD/ChemSketch软件在有机化学教学中的简单应用
蓄势待发 知识准备阶段.
Computer Graphics 计算机图形学基础 张 赐 Mail: CSDN博客地址:
面向对象建模技术 软件工程系 林 琳.
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
绘制圆与多边形 椭圆形 绘制椭圆形的方法是 drawOval(x ,y , width , height), 绘制实心椭圆形的方法是
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
P hoto s hop 第一临床学院 08级临床八年 昌金星.
第一讲: 基本流程(1).
数据挖掘工具性能比较.
1085至1125年间的官员地域分布与社会关系 1.
整合思维导图的初中英语教学设计 主讲人:卢璐.
工业机器人技术基础及应用 主讲人:顾老师
POWERPOINT TEMPLATE HI.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
双曲线的简单几何性质 杏坛中学 高二数学备课组.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
实验1 信息系统分析与设计工具安装.
SOA – Experiment 2: Query Classification Web Service
图片与视频数字化. 图片与视频数字化 图片分类 根据图片的构成元素来分 位图: 由像素组成,计算机按顺序存储每个像素点 的颜色信息的保存方式获得的图片。 位图放大后会模糊失真,存储空间相对较大。 矢量图: 由图元组成,通过数学公式计算获得的图片。 放大后不会失真,占用空间小。
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
产品推广 PRODUCT PROMOTION PRESENTED BY OfficePLUS.
标准配色方案 背景 文本和线条 阴影 强调色 主色一 主色二 主色三 主色四 推荐应用顺序. 标准配色方案 背景 文本和线条 阴影 强调色 主色一 主色二 主色三 主色四 推荐应用顺序.
VisComposer 2019/4/17.
Python金融数据分析教程 解放你的python编程能力 第3关 复杂金融数据图形展示 Python金融数据分析教程 1.
姚金宇 MIT SCHEME 使用说明 姚金宇
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
CLICK HERE TO ADD YOUR TITLE
第4章 Excel电子表格制作软件 4.4 函数(一).
Word中活用“艺▪图▪框” 信息技术必修(一).
第五章 对象特性与图层 主要内容: 对象特性 图层的应用.
iSIGHT 基本培训 使用 Excel的栅栏问题
可编辑图表汇总 修改方法: 点击图表内容→“设计”选项卡→编辑数据.
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
Chapter 18 使用GRASP的对象设计示例.
Visual Basic程序设计 第13章 访问数据库
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
VRP教程 2011.
计算机绘图 AutoCAD2016.
静定结构位移计算 ——应用 主讲教师:戴萍.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
图片与视频数字化. 图片与视频数字化 图片分类 根据图片的构成元素来分 位图: 由像素组成,计算机按顺序存储每个像素点 的颜色信息的保存方式获得的图片。 位图放大后会模糊失真,存储空间相对较大。 矢量图: 由图元组成,通过数学公式计算获得的图片。 放大后不会失真,占用空间小。
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第四节 向量的乘积 一、两向量的数量积 二、两向量的向量积.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
位似.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
质量控制(QC)模式 BrookFIELD.
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
第三章 图形的平移与旋转.
Presentation transcript:

有图有真相 应用程序经常要用到图形/图像/动画 可视化:将抽象事物和过程转变成视觉可见的、形象直观的图形图像表示 统计软件 证券分析软件 教学软件 可视化:将抽象事物和过程转变成视觉可见的、形象直观的图形图像表示 柱状图,直方图,散点图,网络图,流程图,树,地图,图像,动画,... 2 2 2

计算可视化 科学可视化:将科学与工程计算、实验中的数据用直观的计算机图形图像呈现出来,以便人们理解数据、增强对事物现象的认识和对内在规律的洞察. 数据可视化:将海量数据转化为数据图像,以帮助人们直观地观察数据. 可以进而发展到更高层次的信息可视化和知识可视化. 工程设计可视化 ... 3 3

图形是复杂数据 包含的信息是复杂的 图形操作是复杂的 圆形:圆心(元组)和半径(数值);内部及边界的颜色(RGB元组);... 求面积,周长等传统计算;还有移动位置,改颜色等等 4 4 4

数据与操作:两种观点 数据与操作分离 数据与操作一体 编程时先考虑数据的表示 然后再考虑对数据如何操作 编程时考虑的"数据"不是单纯的数据,而是结合了相应操作的数据. 这种"数据"就是对象. 5 5 5

对象 对象:集数据与操作于一身. 计算:向对象发出请求操作的消息. 面向对象:软件系统由各种对象组成,对象之间通过消息进行交互. 对象知道一些信息 对象能对那些信息进行处理 计算:向对象发出请求操作的消息. 面向对象:软件系统由各种对象组成,对象之间通过消息进行交互. 图形编程工具通常都是面向对象实现的. 如Python标准模块Tkinter 6

几个基本概念 类:描述同类对象的共性. 对象:是类的实例. 创建对象:使用类的构造器. 消息:请求对象执行它的方法. 包含的数据 能执行的操作(称为方法) 对象:是类的实例. 创建对象:使用类的构造器. <类名>(<参数>,…) 消息:请求对象执行它的方法. <对象>.<方法名>(<参数>,…) 7 7 7

Tkinter图形编程(1) 导入模块 创建根窗口:作图窗口 import Tkinter 或 from Tkinter import * root = Tk() 8 8

Tkinter图形编程(2) 创建画布 例如:在root中创建300x200的白色画布 c = Canvas(<窗口>,<选项>=<值>,...) Canvas是画布类,利用它可以创建画布对象. 在<窗口>中创建画布 <选项>=<值>用来设置画布对象的数据,如高度,宽度,背景色等 例如:在root中创建300x200的白色画布 c = Canvas(root,width=300, height=200,bg='white') 9 9 9

Tkinter图形编程(3) 布置画布 已经创建了画布c,但在窗口中看不见,因为还需要将画布"布置"到窗口中. c.pack() 点表示法 传统观点下,用一个操作(函数)f()去处理数据x的表示法为f(x) 面向对象观点下,希望对象o执行操作f()的表示法为o.f() c.pack()表示请画布c执行"pack布局"操作 10 10 10

Tkinter图形编程(4) 画布上的坐标系 坐标单位是像素;也可用厘米,英寸等. c.pack()表示请画布c执行"pack布局"操作 11 11 11

Tkinter图形编程(5) 画布上的图形 都有标识号,用于区分同一画布上的多个图形 也可以为图形命名(标签) 12 12 12

画布对象的方法(1) 删除画布上的图形 移动画布上的图形 设置画布上图形的选项 c.delete(id) id是画布上图形的标识号 c.move(id,dx,dy) id是图形标识号,dx和dy是轴向移动距离 设置画布上图形的选项 c.itemconfig(id,<选项>=<值>...)

画布对象的方法(2) 画矩形 c.create_rectangle(x0,y0,x1,y1,<选项>...) 或 r = c.create_rectangle(...) 返回所画矩形的标识号 常用选项 outline = 颜色 fill = 颜色 state=NORMAL/HIDDEN dash=(线段长,间隔) 14

例:画矩形 >>> c.create_rectangle(50,50,200,100) 1 >>> r2 = c.create_rectangle(80,70,240,150,tags="rect#2") >>> print r2 2 >>> c.itemconfig(1,fill="black") >>> c.itemconfig(r2,fil1="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) 15

画布对象的方法(3) 画椭圆 c.create_oval(x0,y0,x1,y1,<选项>...) 返回所画椭圆的标识号 常用选项 outline = 颜色 fill = 颜色 state=NORMAL/HIDDEN dash=(线段长,间隔) 16

例:画椭圆 >>> o1 = c.create_oval(50,50,250,150) >>> o2 = c.create_oval(110,85,140,115,fill='red') >>> o3 = c.create_oval(245,95,255,105,fill='blue') 17

画布对象的方法(4) 画弧形 c.create_arc(x0,y0,x1,y1,<选项>...) 返回所画弧形的标识号 常用选项 start=开始位置(角度) extent=逆时针旋转的角度 style=PIESLICE/ARC/CHORD outline,fill,state, dash等 18

例:画弧形 >>> bbox = (50,50,250,150) >>> c.create_arc(bbox) >>> c.create_arc(bbox,start=100,extent=140,style="arc",width=4) >>> c.create_arc(bbox,start=250,extent=110,style="chord") 19

画布对象的方法(5) 画线条 c.create_line(x0,y0,...xn,yn,<选项>...) 返回所画线条的标识号 常用选项 smooth=0:折线/非0:平滑曲线 arrow=NONE/FIRST/LAST/BOTH arrowshape=(d1,d2,d3) fill,state, dash等 20

例:画线条 >>> s1 = (20,20) >>> s2 = (60,40) >>> polaris = (220,40) >>> c.create_oval(s1,(23,23),fill='black') >>> c.create_oval(s2,(63,43),fill='black') ... >>> c.create_oval(s7,(113,103),fill='black') >>> c.create_oval((222,36),(226,42),fill='black') >>> c.create_line(s1,s2,s3,s4,s5,s6,s7,s4) >>> c.create_line(s7,polaris,dash=(4,),arrow=LAST) >>> c.create_line(5,190,150,160,295,190,smooth=1) 21

画布对象的方法(6) 画多边形 c.create_polyfon(x0,y0,...xn,yn,<选项>...) 返回所画多边形的标识号 常用选项 smooth=0:折线/非0:平滑曲线 outline(缺省值为空) fill(缺省值为黑色) state, dash等 22

例:画弧形 >>> p11,p21,p31 = (70,20),(70+100,20),(70,20+100) >>> c.create_polygon(p11,p12,p13,p14,p15) >>> c.create_polygon(p21,p23,p25,p22,p24,outline="black",fill="") >>> c.create_polygon(p31,p32,p33,p34,p35,outline="black",fill="") 23

画布对象的方法(7) 创建文本 c.create_text(x,y,<选项>...) 返回所创建文本的标识号 常用选项 anchor=E/S/W/N/CENTER/SE/NE/... justify=LEFT/CENTER/RIGHT fill,state, dash等 24

例:创建文本 >>> t1 = c.create_text(10,10,text="NW@(10,10)",anchor=NW) >>> c.create_text(150,10,text="N@(150,10)",anchor=N) >>> c.create_text(290,10,text="NE@(290,10)",anchor=NE) >>> c.create_text(10,100,text="W@(10,100)",anchor=W) >>> c.create_text(150,100,text="CENTER@(150,100)\n2nd Line") 25

画布对象的方法(8) 创建图像 img = PhotoImage(file = <gif图像文件名>) 先创建图像对象 img = PhotoImage(file = <gif图像文件名>) 在画布上显示图像对象 c.create_image(x,y,image=img,<选项>...) 返回所创建图像的标识号 常用选项 anchor=E/S/W/N/CENTER/SE/NE/... state, tags等 26

例:创建图像 >>> pic = PhotoImage(file="C:\WINDOWS\Web\exclam.gif") >>> c.create_image(150,100,image=pic) 27

事件编程 def canvasFunc(event): if c.itemcget(t,"text") == "Hello!": c.itemconfig(t,text="Goodbye!") else: c.itemconfig(t,text="Hello!") def textFunc(event): if c.itemcget(t,"fill") != "white": c.itemconfig(t,fill="white") c.itemconfig(t,fill="black") ... t = c.create_text(150,100,text="Hello!") c.bind("<Button-1>",canvasFunc) #画布与左键绑定 c.tag_bind(t,"<Button-3>",textFunc) #画布上文本与右键绑定 root.mainloop() 28

编程案例:统计图表(1) 程序规格 算法 输入:考试分数 输出:以饼图表示的各分数段所占比例 输入分数mark,换算成a,b,c,d,f等级并累加该等级的人数; 创建窗口和画布; 计算各等级的比例(a/n等),并据此确定扇形起止角度(sA,eA等); 绘制各扇形; 绘制图例; 为各扇形绑定“鼠标进入”事件,并定义事件处理函数(inPieA()等); 进入主事件循环。 29

编程案例:统计图表(2) 代码实现:piechart.py 30

动画编程 动画:运动的图形. 计算机动画 现实中运动是连续的. 运动离散化:t, t+∆t, t+2∆t, t+3∆t,... 快速交替显示一组静止图形,或者让一幅图形快速移动. 关键是控制交替显示或移动的速度:24帧/秒 31

编程实例:演示天体运动(1) 地球在椭圆轨道上运动的计算: 画布坐标系中: 32

编程实例:演示天体运动(2) 月球一方面随地球绕太阳运动,一方面还绕地球运动. 分别计算两种运动导致的坐标变化,然后求和. 33

编程实例:演示天体运动(3) 算法 程序:animation.py 创建窗口和画布; 在画布上绘制太阳、地球和月球,以及地球的绕日椭圆轨道; 设置地球和月球的当前位置; 进入动画循环: 旋转0.01 计算地球和月球的新位置 移动地球和月球到新位置 更新地球和月球的当前位置; 停顿一会 程序:animation.py 34

软件的层次化设计 在一层软件之上架设另一层软件,即高层软件的功能是由低层软件实现的. 例如 为什么不直接使用低层软件? 通常低层软件的界面比较复杂,不适合普通用户使用. 例如 35

层次化设计案例:graphics 有人在Tkinter之上设计了另一个图形模块graphics.py 这是非标准模块,需要自己下载. 36

谢谢