绘图及图像处理
5.1 绘 制 图 形
5.1.1 用画布组件绘图
画布是图形用户界面tkinter的组件,是一个矩形区域,用于绘制图形或作为容器放置其他组件。
1.创建画布对象
创建画布对象的基本语法形式如下:
w = Canvas(master, option=value, … )
其中:
* master:代表父窗口。
* options:为属性参数,其意义如表5.1所示。
表5.1 画布的常用参数
Option 参数
说明
bg
背景颜色
height
画布的高
width
画布的宽
2.图形的绘制方法
Canvas对象包含了大量的绘图方法,表5.2列出了常用的绘图方法。
表5.2 Canvas对象常用的绘图方法
方法
说明
create_line(x1, y1, x2, y2)
绘制一条从(x1,y1)到(x2,y2)的直线
create_rectangle(x1, y1, x2, y2)
绘制一个左上角为(x1,y1),右下角为(x2,y2)的矩形
create_polygon(x1, y1, x2, y2,x3, y3, x4, y4,x5, y5, x6, y6)
绘制一个顶点为(x1,y1),(x2,y2),…,的多边形
create_oval(x1, y1, x2, y2, fill='color')
绘制一个左上角为(x1,y1),右下角为(x2,y2)的外接矩形包围的圆,fill为填充颜色
create_arc(x1, y1, x2, y2, start=s0, extent=s)
绘制在左上角为(x1,y1),右下角为(x2,y2)的外接矩形所包围的一段圆弧,圆弧角度为s,从s0开始
create_image(w, h, anchor=NE,
image=filename)
在w宽h高的矩形区域内,显示文件名为filename的图像
move(obj, x, y)
移动组件obj。x为水平方向变化量,y为垂直方向变化量
【例5-1】 绘制几何图形示例。
程序代码如下:
'''
窗体中的画布示例:
绘制小球和扇形
'''
import tkinter
import tkinter.messagebox
win = tkinter.Tk()
win.title('画布示例') # 定义窗体标题
win.geometry('400×200') # 定义窗体的大小400×200像素
can = tkinter.Canvas(win, height=200, width=400) # 定义画布
id = can.create_line(15,15,190,15) # 画一条直线
io1 = can.create_oval(50, 50, 100, 100, fill='blue') # 画一蓝色圆
io2 = can.create_oval(59, 59, 68, 68, fill='white') # 画一白色小圆
coord = 15, 120, 210, 220
arc = can.create_arc(coord, extent=150, fill="green") # 画一个扇形
can.pack()
win.mainloop()
程序运行结果如图5.1所示。
图5.1 绘制几何图形
【例5-2】 绘制笑脸。
程序代码如下:
'''
窗体中的画布示例:
绘制笑脸
'''
import tkinter
import tkinter.messagebox
win = tkinter.Tk()
win.title('画布示例')
win.geometry('250×250')
can = tkinter.Canvas(win, height=250, width=250) # 定义画布
io1 = can.create_oval(35,30,210,210, fill='yellow') # 画一黄色圆
io2 = can.create_oval(70,70,180,180, fill='black')
io3 = can.create_oval(65,70,185,170, outline='yellow', fill='yellow')
io4 = can.create_oval(80,100,110,130, fill='black')
io5 = can.create_oval(150,100,180,130, fill='black')
can.pack()
win.mainloop()
程序运行结果如图5.2所示。
图5.2 绘制笑脸
【例5-3】 显示图像示例。
程序代码如下:
import tkinter.messagebox
from tkinter import *
win = tkinter.Tk()
win.title('绘图示例') # 定义窗体标题
win.geometry('200×200') # 定义窗体的大小200×200像素
can = tkinter.Canvas(win, height=200, width=200) # 定义画布
filename = PhotoImage(file = "test.gif")
image = can.create_image(150, 10, anchor=NE, image=filename)
can.pack()
win.mainloop()
程序运行结果如图5.3所示。
图5.3 显示图像
5.1.2 用turtle模块绘图
turtle模块是Python中的一个简单绘图工具,用它绘图非常方便。使用turtle绘制图形时,它会显示出一个箭头(又称为“海龟”),该箭头在一个横轴为x、纵轴为y的坐标系中,从原点(0, 0)位置开始,按照所绘图形的轨迹绘制图形。
下面介绍turtle模块的一些基础知识。
1.turtle模块的画布Canvas
画布Canvas是turtle用于绘图区域,可以设置它的大小和初始位置。
(1)设置画布大小
turtle.screensize(canvwidth=None,canvheight=None,bg=None)
其中,参数canvwidth为画布的宽(单位像素);canvheight为高;bg为背景颜色。
例如:
turtle.screensize(800, 600, "green")
当screensize()函数无参数时,则返回一个默认为宽400,高300像素的画布
即
……