problème graphique de création des boutons (knob)
Salut tous,
j'ai développé un script-fu Gimp pour la création de boutons rotatifs.
Souvent on développe le logiciel, ce qui est déjà un gros truc, mais en plus il faut veiller à ce que le logiciel aie un look. (c'est important le look chez les jeunes.)
Bref je me suis basés sur les boutons de calf ou de phasex (réseau d'images) et j'ai développé un script pour gimp qui facilite pas la choses. 15 minutes dès que l'on a l'image de base.
SWi ça intéresse du monde, faites le moi savoir. je vous l'envoi par mail. Il suffit de créer le bouton dans un canvas carré sous gimp et de lancer le script.
On peut soit vouloir la rotation du curseur soit créer le réseau de la couronne immobile et ça roule. A la fin du script, il fusionne tous les calques.
Voilà le script, à copier dans le répertoire caché .gimp.../script de votre home avec l'extension .scm
Pierrotlo
j'ai développé un script-fu Gimp pour la création de boutons rotatifs.
Souvent on développe le logiciel, ce qui est déjà un gros truc, mais en plus il faut veiller à ce que le logiciel aie un look. (c'est important le look chez les jeunes.)
Bref je me suis basés sur les boutons de calf ou de phasex (réseau d'images) et j'ai développé un script pour gimp qui facilite pas la choses. 15 minutes dès que l'on a l'image de base.
SWi ça intéresse du monde, faites le moi savoir. je vous l'envoi par mail. Il suffit de créer le bouton dans un canvas carré sous gimp et de lancer le script.
On peut soit vouloir la rotation du curseur soit créer le réseau de la couronne immobile et ça roule. A la fin du script, il fusionne tous les calques.
Voilà le script, à copier dans le répertoire caché .gimp.../script de votre home avec l'extension .scm
Pierrotlo
; Rotator ; Rotates the selected layer with a given angle, creating new layers for each step ; Based on the ani-rotate script made by Eric Coutier. (define (script-fu-rotator img inLayer inTotAngle inIncCount rot ) (let* ( (pi 3.141592654) ;duplicate the original image (img (car (gimp-channel-ops-duplicate img))) (width (car (gimp-image-width img))) (offsetx (car (gimp-image-width img))) (height (car (gimp-image-height img))) (centerx (/ width 2)) (centery (/ height 2)) (srcLayer (car (gimp-image-get-active-layer img))) (layers (car(cdr (gimp-image-get-layers img)))) (nLayers (car (gimp-image-get-layers img))) (i 0) (layer 0) (layerpos 0) (counter 0) (a 0) (inc (/ inTotAngle inIncCount)) (aRad 0) (newLayer 0) (whiteLayer 0) (resLayer 0) ) ;(set! offsety 0) ;it begins here (gimp-undo-push-group-start img) ;hide all layers (while (< i nLayers) (set! layer (aref layers i)) (gimp-layer-set-visible layer 0) (set! i (+ i 1)) ) ;Agrandi le canvas à la taille du réseau d'image (gimp-image-resize img (* offsetx inIncCount) height 0 0) ;do the frames (while (< counter inIncCount) (set! aRad (* (/ a 180) pi)) (set! newLayer (car (gimp-layer-copy srcLayer FALSE))) (set! layerpos (+ layerpos 1)) (gimp-image-add-layer img newLayer 0) (gimp-layer-set-visible newLayer TRUE) ;Par défaut l'axe de rotation se trouve au centre. Division de la largeur et hauteur par 2. (if (equal? centerx 0) (set! centerx (/ width 2)) ) (if (equal? centery 0) (set! centery (/ height 2)) ) (set! centery (/ height 2)) ;rotates the new layer ;Si la case à cocher est à TRUE, il effectue la rotation du calque, sinon il le laisse tel quel. (if (equal? rot TRUE) ;(gimp-rotate newLayer TRUE aRad) fonction obsolète remplacée par une nouvelle (gimp-item-transform-rotate newLayer aRad FALSE centerx centery) ) ;add background layer (set! whiteLayer (car (gimp-layer-new img width height 1 "rotation layer" 100 0))) (gimp-image-add-layer img whiteLayer 0) (gimp-layer-set-visible whiteLayer TRUE) (gimp-selection-all img) (gimp-edit-clear whiteLayer) (gimp-selection-none img) (set! resLayer (car (gimp-image-merge-visible-layers img 1))) (gimp-layer-set-visible resLayer FALSE) (set! a (+ a inc)) (set! counter (+ counter 1)) ) (gimp-image-remove-layer img srcLayer) ;ordonne la position des claques en commençant par la fin (sinon ils sont inversés) + tous les calques visibles (set! layers (car(cdr (gimp-image-get-layers img)))) (set! nLayers (car (gimp-image-get-layers img))) (set! i 0) (set! layerpos (- (* offsetx inIncCount) offsetx)) (while (< i nLayers) (set! layer (aref layers i)) (gimp-layer-translate (aref layers i) layerpos 0) (gimp-layer-set-visible layer 1) (set! i (+ i 1)) (set! layerpos (- layerpos offsetx )) ) ;(gimp-image-merge-visible-layers img EXPAND-AS-NECESSARY) ;it ends here (gimp-image-merge-visible-layers img 0) (gimp-undo-push-group-end img) (gimp-display-new img) ) ) (script-fu-register "script-fu-rotator" "/Script-Fu/Transforms/Knob Rotator..." "Rotates the selected layer with a given angle, creating new layers for each step" "Joacim Breiler 2006-09-23" "Pierre Lo Ciceror" "2013 V 1.1" "" SF-IMAGE "image" 0 SF-DRAWABLE "drawable" 0 SF-ADJUSTMENT "total angle" '(360 0 360 1 10 0 0) SF-ADJUSTMENT "inc number" '(15 2 360 1 2 0 1) ;SF-ADJUSTMENT "Déplacement du calque en x" '(0 -9999 9999 1 10 0 1) ;SF-ADJUSTMENT "Déplacement du calque en y" '(0 -9999 9999 1 10 0 1) SF-TOGGLE "Rotation ?" FALSE ;SF-ADJUSTMENT "Center X" '(0 -99999 99999 1 10 0 1) ;SF-ADJUSTMENT "Center Y" '(0 -99999 99999 1 10 0 1) ;SF-TOGGLE "vertical" FALSE ;SF-TOGGLE "add background to each frame" TRUE ;SF-TOGGLE "flatten before anim" TRUE )