Учитывая требование, я бы использовал только один язык: Tcl.Библиотека виджетов Tk имеет отличный виджет холста, который основан на векторах и очень прост в использовании.Он основан на событиях, поэтому он очень похож на javascript с точки зрения программирования пользовательского интерфейса.
Вот код для рисования линий типа "укажи и нажми":
Во-первых, создание холста просто:
canvas .c
pack .c
Теперь код для рисования линий и щелчка:
set currentObject ""
set line {
set ::currentObject [.c create line %x %y %x %y]
bind . <Motion> {
.c coords $currentObject [list %x %y %%x %%y]
}
}
Теперь свяжите код рисования линий с событием mousedown:
bind . <ButtonPress-1> $line
Просто не забудьте обработатьсобытие mouseup также:
bind . <ButtonRelease-1> {
bind . <Motion> {}
}
Это примерно дюжина строк кода.Это еще одна причина, по которой я обычно обращаюсь к Tcl для такого рода вещей: он позволяет вам многое делать с очень небольшим количеством кода.