accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

changement de formes avec shape

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  fr.comp.lang.tcl ] 

Retour : Accueil du site fr comp lang tcl   charte stats de ce groupe


  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}]


DateSujet  Auteur
01.01.
o 
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)