在 tkinter 中有没有办法绘制平滑的曲线?
In tkinter is there a way to draw a smoothed out curved line?
以下提供的行来自the tkdocs website。
A line item can actually be a series of line segments, not just one; in
our example, we could have chosen to use a single line item for each
complete stroke. The line can also be drawn directly point-to-point,
or smoothed out into a curved line.
文档最后指出“一条线(在 tkinter canvas 上)可以直接点对点绘制,或者平滑成一条曲线。”。但是我还没有找到办法做到这一点。
编辑:
我的项目中使用的全部代码太大且无关紧要,无法提供,但下面给出其中的一小部分,与上述问题有关。希望下面的代码可以帮助描述我到目前为止所做的尝试。
def clear_prev_draw_coords(event = None) :
global last_draw_x, last_draw_y, pen_color, pen_size
last_draw_x, last_draw_y = None, None
drawing_coord_list.clear()
return
def draw() :
last_img_x = 0
last_img_y = 0
canvas.create_line(last_draw_x, last_draw_y, x2, y2, fill = pen_color, width = pen_size, tag = tag, smooth = 1)
last_draw_x, last_draw_y = x2, y2
return
def toggle_pen_mode(dummy = None) :
global mode
mode = 'pen'
root.bind("<B1-Motion>", draw)
root.bind("<ButtonRelease-1>", clear_prev_draw_coords)
return
你读过effbot了吗?您可以在 lot 中找到有关所有可能的标志和选项的信息。这个迷你示例创建了一条带有 smooth
-flag 的曲线:
from tkinter import *
master = Tk()
w = Canvas(master, width=200, height=100)
w.pack()
w.create_line(150,0, 100,50, 50,0, 0,50, smooth=1)
mainloop()
以下提供的行来自the tkdocs website。
A line item can actually be a series of line segments, not just one; in our example, we could have chosen to use a single line item for each complete stroke. The line can also be drawn directly point-to-point, or smoothed out into a curved line.
文档最后指出“一条线(在 tkinter canvas 上)可以直接点对点绘制,或者平滑成一条曲线。”。但是我还没有找到办法做到这一点。
编辑:
我的项目中使用的全部代码太大且无关紧要,无法提供,但下面给出其中的一小部分,与上述问题有关。希望下面的代码可以帮助描述我到目前为止所做的尝试。
def clear_prev_draw_coords(event = None) :
global last_draw_x, last_draw_y, pen_color, pen_size
last_draw_x, last_draw_y = None, None
drawing_coord_list.clear()
return
def draw() :
last_img_x = 0
last_img_y = 0
canvas.create_line(last_draw_x, last_draw_y, x2, y2, fill = pen_color, width = pen_size, tag = tag, smooth = 1)
last_draw_x, last_draw_y = x2, y2
return
def toggle_pen_mode(dummy = None) :
global mode
mode = 'pen'
root.bind("<B1-Motion>", draw)
root.bind("<ButtonRelease-1>", clear_prev_draw_coords)
return
你读过effbot了吗?您可以在 lot 中找到有关所有可能的标志和选项的信息。这个迷你示例创建了一条带有 smooth
-flag 的曲线:
from tkinter import *
master = Tk()
w = Canvas(master, width=200, height=100)
w.pack()
w.create_line(150,0, 100,50, 50,0, 0,50, smooth=1)
mainloop()