set t .demo destroy $t toplevel $t set _paint(top) $t set _paint(width) 800 set _paint(height) 600 set _paint(bg) white set _paint(color) black # Canvas set _paint(can) [canvas $t.c \ -width $_paint(width) \ -height $_paint(height) \ -background $_paint(bg) \ ] grid $_paint(can) -row 0 -column 0 # Image set _paint(image) [image create photo \ -width $_paint(width) \ -height $_paint(height) \ -palette 256/256/256 \ ] # Canvas image item set _paint(image_id) [$_paint(can) create image \ 0 0 \ -anchor nw \ -image $_paint(image) \ ] # Paint pixel at a X,Y coord proc Paint {x y} { global _paint if {$x >= 0 && $y >= 0} { $_paint(image) put $_paint(color) \ -to $x $y \ [expr {$x + 1}] [expr {$y + 1}] } } bind $_paint(can) <1> {Paint %x %y} bind $_paint(can) <B1-Motion> {Paint %x %y} # Button 3 will select a new paint color proc ChangeColor {} { global _paint set _paint(color) [tk_chooseColor] raise $_paint(top) } bind $_paint(can) <3> {ChangeColor}
if 0 {
Asier Burgoa González asier@eniac.es Éniac, Sistemas Informáticos S.A. LOGROÑO (La Rioja) SPAIN +34 941 28 28 28}