OUTPUT BUFFER:
#!/usr/local/bin/wish pack [canvas .c -height 50 \ -width 50 \ -scrollregion [list 0 0 50 50] ] proc drawinit {} { .c create rectangle 10 10 20 20 .c create rectangle 30 30 40 40 .c create rectangle 10 30 20 40 .c create rectangle 30 10 40 20 .c create line 15 15 35 35 return } proc zoomin {} { global s set s [expr {$s+0.1}] puts "wx [winfo pointerx .c]" puts "wy [winfo pointery .c]" puts "cx [.c canvasx [winfo pointerx .c]]" puts "cy [.c canvasy [winfo pointery .c]]" .c scale all [.c canvasx [expr {[winfo pointerx .c]-[winfo rootx .c]}]] [.c canvasy [expr {[winfo pointery .c]-[winfo rooty .c]}]] $s $s puts "[.c bbox all]" return } proc zoomout {} { global s set s [expr {$s-0.1}] puts "wx [winfo pointerx .c]" puts "wy [winfo pointery .c]" puts "cx [.c canvasx [winfo pointerx .c]]" puts "cy [.c canvasy [winfo pointery .c]]" .c scale all [.c canvasx [expr {[winfo pointerx .c]-[winfo rootx .c]}]] [.c canvasy [expr {[winfo pointery .c]-[winfo rooty .c]}]] $s $s puts "[.c bbox all]" return } drawinit set s 1. bind .c