Version 16 of Analog widgets

Updated 2011-07-05 02:11:44 by RLE

Marco Maggi The analog widgets are now (Aug 10, 2003) a package [L1 ]. Updated with the aliasing code for lines (Sep 5, 2003).


A tachometer-like widget: type 1

A needlemeter widget: type 1 (an error in the title... RS fixed it)


A voltmeter-like widget: type 1


Here is a test script for the 3D circle border. See also: drawing gradients on a canvas, making color gradients and Gradients Color Transitions.


GPS This is cool! Thanks for sharing it. :)


 package require Tcl 8
 package require Tk  8
 
 proc main { argc argv } {
     global     forever
 
     wm withdraw .
     wm title   . "A shadowed 3D circle"
     wm geometry . +10+10
 
     canvas .c -background blue -width 400 -height 400
     grid .c -sticky news
 
     set num 10
     set xcentre 200
     set ycentre 200
     for {set i 0} {$i < $num} {incr i} {
        set radius      [expr {20.0*$i}]
        set orient      [expr {360.0/$num*$i}]
 
        set x1          [expr {$xcentre-$radius}]
        set y1          [expr {$ycentre-$radius}]
        set x2          [expr {$xcentre+$radius}]
        set y2          [expr {$ycentre+$radius}]
 
        shadowcircle .c $x1 $y1 $x2 $y2 40 3m $orient
     }
 
     wm deiconify .
     vwait forever
     exit 0
 }
 
 proc shadowcircle { canvas x1 y1 x2 y2 ticks width orient } {
     set angle $orient
     set delta [expr {180.0/$ticks}]
     for {set i 0} {$i <= $ticks} {incr i} {
        set a [expr {($angle+$i*$delta)}]
        set b [expr {($angle-$i*$delta)}]
 
        set color [expr {20+$i*(220/$ticks)}]
        set color [format "#%x%x%x" $color $color $color]
 
        $canvas create arc $x1 $y1 $x2 $y2 -start $a -extent $delta \
                -style arc -outline $color -width $width
        $canvas create arc $x1 $y1 $x2 $y2 -start $b -extent $delta \
                -style arc -outline $color -width $width
     }
 }
 
 main $argc $argv