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___
uniquename 2014jan27
For those who do not have the facilities or time to implement the code above, here is an image of the 'shadowed 3D circle' Tk canvas produced by the code above.
It appears that if the gaps between the 'circles' were closed and all the dark shadows were moved to one side of the resulting 'disk', then one would see what would look like a pretty nicely shaded spherical dome.