package require icons 1.0
package require img::jpeg
package require img::png
package require img::bmp
::icons::icons create -file /Wintools/tcl/lib/icons/tkIcons \
{filedocument16 editcut16 navforward16 navback16 viewmag+16 viewmag-16 navhome16}
frame .bar
button .bar.b1 -relief flat -image ::icon::filedocument16 -command openFile
button .bar.b2 -relief flat -image ::icon::editcut16 -command setEditCutMode
button .bar.b3 -relief flat -image ::icon::navforward16 -command turnRight
button .bar.b4 -relief flat -image ::icon::navback16 -command turnLeft
button .bar.b5 -relief flat -image ::icon::viewmag+16 -command zoomin
button .bar.b6 -relief flat -image ::icon::viewmag-16 -command zoomout
button .bar.b7 -relief flat -image ::icon::navhome16 -command exit
# 画像ファイルを読みます。
proc openFile {} {
global initialDir
set fileName [tk_getOpenFile -initialdir $initialDir \
-title 画像ファイルを開く]
if {$fileName != ""} {
set initialDir [file dirname $fileName]
Image1 read $fileName
adjustCanvasSize
}
}
# 切り取りモードを切り替えます。
proc setEditCutMode {} {
global editCutMode
set editCutMode [expr 1-$editCutMode]
}
# 画像操作後に呼ばれ、キャンバスのサイズを調整します。
proc adjustCanvasSize {} {
.can configure -width [image width Image1] -height [image height Image1]
}
set can [canvas .can -bg #cccccc]
image create photo Image1
$can create image 0 0 -anc nw -image Image1
bind $can <Button-1> {
if {$editCutMode == 1} {
set startx %x
set starty %y
set itemline [%W create rectangle $startx $starty $startx $starty \
-fill {} -outline black -width 1]
}
}
bind $can <Button1-Motion> {
if {$editCutMode == 1} {
%W coords $itemline $startx $starty %x %y
}
}
bind $can <ButtonRelease-1> {
if {$editCutMode == 1} {
tk_messageBox -message "released: $startx $starty %x %y"
%W delete $itemline
}
}
foreach e {1 2 3 4 5 6 7} {
pack .bar.b$e -padx 2 -side left
}
set editCutMode 0
set initialDir [pwd]
pack .bar .can -side top -pady 2 -anc w
|