zoom.tcl
上传用户:kellyonhid
上传日期:2013-10-12
资源大小:932k
文件大小:1k
源码类别:

3D图形编程

开发平台:

Visual C++

  1. proc zoomInClick {x y s} {
  2.     if {$s == 1} {
  3. # shift key down
  4. zoomSetBaseView
  5.     } 
  6.     zoomNow 50 $x $y
  7. }
  8. proc zoomOutClick {x y s} {
  9.     if { $s == 1} {
  10. # shift key down
  11. zoomRestoreBaseView
  12. return;
  13.     }
  14.     zoomNow 200 $x $y
  15. }
  16. proc zoomNow {{percent 50} {x ""} {y ""}} {
  17.     # Get screen size
  18.     global toglPane
  19.     set renderingwidth [lindex [$toglPane config -width] 4]
  20.     set renderingheight [lindex [$toglPane config -height] 4]
  21.     # Figure pixel offsets
  22.     set xoffset [expr "$renderingwidth  * $percent / 200 "]
  23.     set yoffset [expr "$renderingheight * $percent / 200 "]
  24.     # Check if we need screen center
  25.     if {"$x" == ""} {set x [expr "$renderingwidth /2"]}
  26.     if {"$y" == ""} {set y [expr "$renderingheight /2"]}
  27.     # Figure coordinates
  28.     set left [expr "$x - $xoffset"]
  29.     set top [expr "$y - $yoffset"]
  30.     set right [expr "$x + $xoffset"]
  31.     set bottom [expr "$y + $yoffset"]
  32.     puts "$left $top $right $bottom"
  33.     # Can't decide if this is desirable behavior (?)
  34.     # Set center of rotation
  35.     #  setRotationCenter $x $y 
  36.     # Zoom
  37.     plv_zoom_to_rect $left $top $right $bottom
  38. }
  39. proc zoomSetBaseView {} {
  40.     vg_CreateView ZOOM_BASE
  41. }
  42. proc zoomRestoreBaseView {} {
  43.     vg_RestoreState ZOOM_BASE
  44. }