45 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| # ----------------------------------------------------------------------
 | |
| #  DEMO: scrolledcanvas in [incr Widgets]
 | |
| # ----------------------------------------------------------------------
 | |
| package require Iwidgets 4.0
 | |
| 
 | |
| option add *textBackground seashell
 | |
| . configure -background white
 | |
| 
 | |
| iwidgets::scrolledcanvas .canv -labeltext "Scrolledcanvas" \
 | |
|     -vscrollmode dynamic -hscrollmode dynamic -autoresize yes
 | |
| 
 | |
| pack .canv -expand yes -fill both -padx 4 -pady 4
 | |
| .canv xview moveto 0
 | |
| .canv yview moveto 0
 | |
| 
 | |
| 
 | |
| button .zoomin -text "Zoom In" -command {
 | |
|     .canv scale all 0 0 2 2
 | |
|     .canv configure -scrollregion [.canv bbox all]
 | |
| }
 | |
| pack .zoomin -side left -expand yes -padx 4 -pady 4
 | |
| 
 | |
| button .zoomout -text "Zoom Out" -command {
 | |
|     .canv scale all 0 0 0.5 0.5
 | |
|     .canv xview moveto 0
 | |
|     .canv yview moveto 0
 | |
|     .canv configure -scrollregion [.canv bbox all]
 | |
| }
 | |
| pack .zoomout -side left -expand yes -padx 4 -pady 4
 | |
| 
 | |
| 
 | |
| bind [.canv component canvas] <ButtonPress-1> {add_rectangle %W %x %y}
 | |
| bind [.canv component canvas] <B1-Motion> {add_rectangle %W %x %y}
 | |
| 
 | |
| proc add_rectangle {win x y} {
 | |
|     set x [$win canvasx $x]
 | |
|     set y [$win canvasy $y]
 | |
| 
 | |
|     $win create rectangle \
 | |
|         [expr $x-4] [expr $y-4] \
 | |
|         [expr $x+4] [expr $y+4] \
 | |
|         -outline "" -fill red
 | |
| 
 | |
|     $win configure -scrollregion [$win bbox all]
 | |
| }
 |