Tkinter Canvas图元放置坐标系统及各形状坐标参数咨询
Tkinter Canvas 坐标系统核心规则
- 原点位置:画布的左上角顶点为坐标原点(0,0),和常规数学坐标系原点在左下角的规则不同
- 轴方向:水平方向为X轴,越靠右X值越大;垂直方向为Y轴,越靠下Y值越大,单位统一为像素
- 坐标类型:所有图元使用的是画布的逻辑坐标,和画布控件在窗口上的屏幕位置无关,滚动画布时只会改变视口显示范围,不会修改图元本身的坐标值
- 容错规则:传入的边界坐标如果出现右下角坐标值小于左上角的情况(比如x2<x1、y2<y1),Tkinter会自动交换坐标值计算边界,不会抛出错误,坐标支持传入整数、浮点数两类数值。
各类图元的坐标参数规则
常见图元的基础参数规则如下:
- 直线(line):基础参数为
(x0, y0, x1, y1),依次对应线段起点横纵坐标、终点横纵坐标,传入多组坐标可以直接绘制连续折线 - 矩形(rectangle)、椭圆(oval)、图像(image)、文本(text):基础参数为
(x1, y1, x2, y2),对应图元外接矩形的左上角坐标(x1,y1)、右下角坐标(x2,y2):- 椭圆会完全内切在该外接矩形内
- 图像会拉伸/缩放至刚好填满该矩形
- 文本的该参数对应文本内容的包围盒边界
弧形(arc)的参数规则
弧形的前4个坐标参数和椭圆完全一致:(x1, y1, x2, y2),对应该弧形所属完整椭圆的外接矩形左上角、右下角坐标,弧形本身就是这个完整椭圆上的一段。如果要绘制正圆弧线,只需要让传入的外接矩形为正方形即可。
除了边界坐标外,弧形还需要两个核心角度参数控制绘制范围:
start:弧形的起始角度,单位为度,0度固定为外接矩形水平中线的最右端点(即3点钟方向)extent:弧形从起始角度开始覆盖的角度偏移量,角度正方向为数学定义的逆时针方向,但受Canvas Y轴向下翻转的影响,实际渲染时正偏移值视觉上为顺时针旋转。
举个例子:设置start=0, extent=90时,绘制的弧形会从3点钟方向延伸到6点钟方向,也就是四分之一圆的右下弧段。
弧形还支持style参数控制最终形态:
style=ARC:仅绘制弧线本身,为非闭合图形style=CHORD:在弧线基础上连接两个端点形成弦,构成闭合的弓形style=PIESLICE:在弧线基础上,分别连接两个端点和椭圆中心点,构成闭合的扇形
代码示例:
import tkinter as tk root = tk.Tk() canvas = tk.Canvas(root, width=200, height=200) canvas.pack() # 绘制中心在(60,60)、半径50的0-90度右下扇形 canvas.create_arc(10, 10, 110, 110, start=0, extent=90, style=tk.PIESLICE, fill='red') root.mainloop()
内容的提问来源于stack exchange,提问作者OmegaO333
相关产品推荐
相关产品推荐

