changement de formes avec shape
[ Nouvelle discussion
| Répondre au groupe
|
fr.comp.lang.tcl ]
Sujet: changement de formes avec shape
De: david.co...@gmail.com (david cobac)
Groupes: fr.comp.lang.tcl
Organisation: Guest of ProXad - France
Date: 11. May 2008, 10:05:31
|
Bonjour,
toujours dans mon lanceur, j'essaye d'appliquer l'extension shape mais
ce n'est manifestemet pas gagné ! Voilà ci-dessous, un morceau de code
qui illustre bien mon problème, quand on arrive sur l'icone, le nouveau
masque plus petit ne se centre plus sur le canvas, j'ai joué avec shape
offset (cf. procédure entreeIcone) mais il semble que l'image ne soit
pas où elle devrait être, au centre elle aussi, problème qui ne survient
pas sans l'extension shape où l'mage est alors parfaitement centrée sur
le canvas.
J'ai tâtonné pas mal...mais rien de concluant n'en est sorti...
Merci
david
package require Tk
package require pixane
package require shape
proc retailleIcone {src} {
set icone [pixane create]
pixane load $icone -file $src
## creation icone en taille ::t
set nvIcone [pixane create]
pixane resize $nvIcone $::t $::t
pixane blank $nvIcone
pixane scale $nvIcone $icone -width $::t -height $::t
set i [pixcopy $nvIcone]
pixane delete $nvIcone
## creation icone en taille 3::t/4
set nvIcone [pixane create]
set t [expr {3*$::t/4}]
pixane resize $nvIcone $t $t
pixane resize $nvIcone $::t $::t
pixane blank $nvIcone
pixane scale $nvIcone $icone -width $t -height $t
set j [pixcopy $nvIcone]
pixane delete $nvIcone
pixane delete $icone
return [list $i $j]
}
proc executeApp {com} {
eval exec $com &
}
proc ajouteApplication {app nom com icone position} {
set app .$app
toplevel $app
wm overrideredirect $app 1
pack [canvas $app.c -width $::largeur -height $::hauteur\
-highlightt 0 -bd 0]
foreach {i1 i2} [retailleIcone $icone] break
$app.c create image [expr {$::largeur/2}] [expr {$::hauteur/2}]\
-image $i1 -tags ico
#
bind $app <1> [list executeApp $com]
#
set bb [$app.c bbox ico]
eval [list $app.c create rectangle] $bb \
[list -fill "" -outline "" -tags icozone]
#
$app.c bind icozone <Enter> [list entreeIcone $app $i2]
$app.c bind icozone <Leave> [list sortieIcone $app $i1]
bind $app <Configure> [list modifie $app $i1 $position]
}
proc entreeIcone {fen icone} {
$fen.c itemconfigure ico -image $icone
t $fen $icone 4 4
}
proc sortieIcone {fen icone} {
$fen.c itemconfigure ico -image $icone
t $fen $icone
}
proc t {fen icone {xoff 0} {yoff 0}} {
shape set $fen.c photo $icone
shape set $fen window $fen.c
shape offset $fen $xoff $yoff
}
proc modifie {fen icone position} {
t $fen $icone
}
proc affichageBoutons {} {
set i 0
foreach app $::ordre {
ajouteApplication \
$app \
[set ::[set app](nom)] \
[set ::[set app](commande)]\
[set ::[set app](icone)]\
[incr i]
}
}
# t taille de la grande icone
set t 32
# largeur et hauteur : dimensions des canvas contenant l'icone
set largeur 32
set hauteur 32
#
set Lecran [winfo screenwidth .]
set Hecran [winfo screenheight .]
wm withdraw .
############################################################################
array set navigateur {
nom Firefox
commande firefox
icone /usr/share/pixmaps/firefox-3.0.png
}
set ordre {navigateur}
###############
affichageBoutons
# pour l'exemple
wm geometry .navigateur +[expr {$::Lecran/2}]+[expr {$::Hecran/2}]

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|