Hong-Phuc Bui
2025-05-05 3d708d0aa935c6352de84a98592991c8638e7181
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from tkinter import *
 
from bezier import make_cubic_bezier
 
def draw_bezier(canvas, control_points):
    points = make_cubic_bezier(control_points, n= 400)
    for i in range(1,len(points)):
        x1 = points[i-1][0]
        y1 = points[i-1][1]
        x2 = points[i][0]
        y2 = points[i][1]
        canvas.create_line(x1,y1, x2,y2)
 
 
def get_point(event):
    global control_points
    point = x, y = (event.x, event.y)
    control_points.append(point)
    canvas.create_oval(x, y, x+3, y+3)
    if len(control_points) == 4:
        draw_bezier(canvas, control_points)
        control_points = []
 
 
if __name__ == '__main__':
 
    control_points = []
 
    root = Tk()
 
    canvas = Canvas(root, width=800, height=800)
    canvas.pack()
 
    canvas.bind('<Button-1>', get_point)
 
    root.mainloop()