Guest User

Untitled

a guest
Oct 28th, 2019
608
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 1.36 KB | None | 0 0
  1. package require Tk
  2.  
  3. grid [tk::canvas .canvas -width 500 -height 500 -scrollregion "0 0 1000 1000"] -sticky nwes -column 0 -row 0
  4. grid columnconfigure . 0 -weight 1
  5. grid rowconfigure . 0 -weight 1
  6.  
  7. bind .canvas <1> "set lastx %x; set lasty %y"
  8. bind .canvas <B1-Motion> "addLine %x %y"
  9. bind .canvas <B1-ButtonRelease> "doneStroke"
  10.  
  11. set id [.canvas create rectangle 10 10 30 30 -fill red -tags "palette palettered"]
  12. .canvas bind $id <1> "setColor red"
  13.  
  14. set id [.canvas create rectangle 10 35 30 55 -fill blue -tags "palette paletteblue"]
  15. .canvas bind $id <1> "setColor blue"
  16.  
  17. set id [.canvas create rectangle 10 60 30 80 -fill black -tags "palette paletteblack paletteSelected"]
  18. .canvas bind $id <1> "setColor black"
  19.  
  20. proc setColor {color} {
  21.   set ::color $color
  22.   .canvas dtag all paletteSelected
  23.   .canvas itemconfigure palette -outline white
  24.   .canvas addtag paletteSelected withtag palette$color
  25.   .canvas itemconfigure paletteSelected -outline #999999
  26. }
  27.  
  28. setColor black
  29. .canvas itemconfigure palette -width 5
  30.  
  31. proc addLine {x y} {
  32.   if {![info exists ::lastx]} {
  33.     return
  34.   }
  35.   if {![info exists ::lasty]} {
  36.     return
  37.   }
  38.   .canvas create line $::lastx $::lasty $x $y -fill $::color -width 5 -tags currentline
  39.   set ::lastx $x
  40.   set ::lasty $y
  41. }
  42.  
  43. proc doneStroke {} {
  44.   .canvas itemconfigure currentline -width 1
  45.   .canvas dtag all currentline
  46. }
Advertisement
Add Comment
Please, Sign In to add comment