[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Nouveau curseur ? Croix ouverte




Pour utiliser un nouveau curseur, plusieurs possibilites:

- en utiliser un qui existe deja dans Tk
	vous pouvez trouver une liste complete a
file:/proj/epidaure/home/WWW/DOC_tcltk8.3.2/TkCmd/cursors.htm

- en creer un nouveau
	Pour l'instant, on a trouve une maniere d'en faire de nouveau qui n'est
probablement pas la maniere la plus simple mais elle marche ...
Procedure:
Le curseur va etre decrit par un fichier bitmap au format xbm
Lancer gimp, File/New ... regler la taille en pixels et choisir Fill
Type Transparent
Ensuite, il faut dessiner le bitmap. On peut zoomer en appuyant sur la
touche '+'
Puis Save as ... en chosissant le format xpm  et en mettant l'extension
.xpm ( bitmap.xpm )

Ensuite, faire un convert bitmap.xpm bitmap.xbm pour le convertir au
format xbm
Lancer xv bitmap.xbm. Lancer le color editor ( touche 'E' ) et faire un
RevVid puis sauver l'image.

Editer enfin le fichier bitmap.xbm. Rajouter les lignes 
#define bitmap_x_hot 7
#define bitmap_y_hot 7
juste apres la definition de la taille du bitmap.
Cela sert a definir le centre du bitmap
Exemple: fichier NEW.xbm 
#define NEW_width 15
#define NEW_height 15
#define NEW_x_hot 7
#define NEW_y_hot 7
static char NEW_bits[] = {

0x40,0x81,0x40,0x81,0x40,0x81,0x40,0x81,0x00,0x80,0x00,0x81,0x2f,0xf8,0x00,

0x80,0x0f,0xfa,0x40,0x80,0x00,0x80,0x40,0x81,0x40,0x81,0x40,0x81,0x40,0x81
 };


Ensuite, pour utiliser ce nouveau cursor dans un widget TK, il suffit de
faire 
<widget_name> configure -cursor "@bitmap.xbm fgColor"
Par exemple pour utiliser ce nouveau curseur dans une slicecam, on peut
faire

[slicecam1 -widget] configure -cursor "@NEW.xbm white"
Attention a ne pas se tromper dans le chemin d'acces au fichier bitmap.
On peut toujours mettre le chemin absolu  -cursor
"@/u/klebs/0/jdlemare/NEW.xbm white"

Sinon, pour en utiliser un deja existant comme diamond_cross par
exemple, faire
<widget_name> configure -cursor diamond_cross


Une autre methode est de creer le curseur "en dur" dans le code C++ et
donc de changer le curseur par defaut. 
Dans ce cas, le probleme vient du fait que, souvent, la forme du curseur
depend de ce que 
l'on veut faire. Il n'y a donc pas un seul curseur ideal.

La solution est donc, en fonction de l'utilisation, de charger un
nouveau curseur ( predifini ou a partir d'un fichier bitmap que vous
avez cree ) que l'on utlisera dans le widget voulu.

Voila 

Jean-Didier