Bonjour,
david cobac a écrit :
> Eric Hassold <hassold@evolane.com> a écrit :
>> Bonjour,
>>
>> [...] Cette variante de la procedure t, qui
>> applique le masque, semble marcher a premiere vue:
>>
>> proc t {fen icone {xoff 0} {yoff 0}} {
>> shape set $fen photo $icone
>> shape offset $fen $xoff $yoff
>> }
>>
>> Eric
>
> Bonjour et merci Éric pour la réponse,
>
> effectivement, la petite icône est maintenant parfaitement visible,
> néanmoins, la réduction ne semble pas se faire par rapport au centre du
> disque de l'icône et ce malgrè des essais de offset... comportement
> étrange sachant que rien ne change au niveau de la position de l'image
> dans le canvas.
>
> De plus, en arrivant lentement à la limite de l'icône, on peut observer
> un effet de <Enter>/<Leave> assez désagréable qui n'apparaît évidemment
> pas si on place d'abord la petite pour faire apparaître la grande dans
> l'entrée. D'ailleurs, il me semble que le bind avec le rectangle devient
> ici parfaitement inutile puisque la 'shape' s'applique à l'icône. Mais
> au final, c'est peut-être plus logique en arrivant sur une icône de
> l'agrandir que de la rétrécir !
Essaye en creant une image de taille fixe (par exemple 48x48), qui
couvre tout le canvas de meme taille, et en utilisant pixane pour
modifier le contenu de cette image en partant d'un contenu totalement
transparent, et en y copiant l'image a la taille souhaitee, centree. Le
Enter/Leave sera alors sur une zone constance, et le code sera d'autant
plus simple que c'est alors la meme image qui sera utilisee pour l'item
du canvas, en (0,0) ancre NW, et pour le masque du "shape".
Et pour le redimensionnement fluide, pixel par pixel, pour un look&feel
facon dock MacOSX, suffira alors de faire grandir l'image selon la
distance du pointeur au centre de l'image.
Eric