Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Encore une petite sub palette | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Encore une petite sub palette Sam 28 Sep 2013 - 15:19 | |
| Une petite sub palette de couleurs, très simplifiée, moins sophistiquée que celle de bignono, et avec seulement un choix parmi 216 couleurs (les couleurs de base Html), ça suffisait amplement pour mes besoins. Il suffit de cliquer sur une couleur, et le résultat est rendu dans le clipboard sous la forme d'une chaîne ascii, de valeur R*65536 + G*256 + B. Au retour il suffit de faire: - Code:
-
v% = VAL(CLIPBOARD_STRING_PASTE$) R% = INT(v%/65536): G% = BIN_AND(v%,65280)/256: B% = BIN_AND(v%,255) On peut redimensionner la taille des cellules (pour les plus myopes ): variables wf% et hf%, le reste s'ajustera automatiquement. - Code:
-
SUB Palette() ' Choix d'une couleur parmi 216 (couleurs de base Html), résultat dans ' le clipboard sous la forme d'une chaîne de valeur: R*65536 + G*256 + B ' Récupération: v% = VAL(CLIPBOARD_STRING_PASTE$) ' ------------ R%=INT(v%/65536): G%=BIN_AND(v%,65280)/256: B%=BIN_AND(v%,255) DIM_LOCAL i%,j%,x%,y%,r%,g%,b%,wf%,hf%,wc%,hc%,f% f% = 3000: WHILE OBJECT_EXISTS(f%)=1: f%=f%+1000: END_WHILE wf% = 30: hf% = 16: wc% = 6*wf%: hc% = 36*hf% FORM f%: TOP f%, 0: LEFT f%, 0: BORDER_SMALL f%: TO_FOREGROUND f% CAPTION f%, "- PALETTE DE 216 COULEURS -" WIDTH f%, wc%+16: HEIGHT f%, hc%+34 PICTURE f%+1: PARENT f%+1,f%: WIDTH f%+1, wc%: HEIGHT f%+1,hc% 2D_TARGET_IS f%+1: r% = 0: g% = 0: b% = 0 FOR j% = 0 TO 35 y% = j%*hf% FOR i% = 0 TO 5 x% = i%*wf% 2D_FILL_COLOR r%,g%,b%: 2D_RECTANGLE x%,y%,x%+wf%-1,y%+hf%-1 b% = b% + HEX("33") IF b% > 255 b% = 0: g% = g% + HEX("33") IF g% > 255 THEN g% = 0: r% = r% + HEX("33") END_IF NEXT i% NEXT j% WHILE MOUSE_LEFT_DOWN(f%+1) = 0: WAIT 200:END_WHILE x% = MOUSE_X_POSITION(f%+1): y% = MOUSE_Y_POSITION(f%+1) r% = COLOR_PIXEL_RED(f%+1,x%,y%) g% = COLOR_PIXEL_GREEN(f%+1,x%,y%) b% = COLOR_PIXEL_BLUE(f%+1,x%,y%) CLIPBOARD_STRING_COPY STR$(65536*r%+256*g%+b%) 2D_TARGET_IS 0: DELETE f% END_SUB Une remarque en passant: suite à une intervention de Jack, j'ai appris que l'on pouvait utiliser en local des noms de variables déjà déclarées en 'global' sans incidence sur celles-ci, donc pas de souci pour les noms des variables locales, ce qui est très intéressant et que je ne savais pas (je m'efforçais de donner des noms tarabiscotés dans les subs pour éviter les collisions...) Màj 7/10: suppression du sous-programme et de son étiquette, l'attente du clic souris se fait dans une boucle While/End While
Dernière édition par JL35 le Lun 7 Oct 2013 - 21:44, édité 2 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Encore une petite sub palette Sam 28 Sep 2013 - 16:18 | |
| Salut JL35, Malgré qu'il y en a déjà pas mal, çà reste une bonne sub qui permet de récupérer immédiatement Les valeurs. C'est propre et pratique. A noter que la copie du code à partir du forum a posée un problème. Le label Chx_Coul s'est transformé en Ch_Coul A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Encore une petite sub palette Sam 28 Sep 2013 - 16:29 | |
| Bonjour Jean Claude, et merci pour ton appréciation. Pour le forum, il marche très bien, c'est moi qui ai changé l'étiquette au dernier moment et j'avais oublié un élément J'ai édité ensuite, mais tu as été plus rapide ! Pareil, l'exemple de calcul de récupération des valeurs n'était pas bon non plus, ça a été corrigé. Cette sub, je m'en sers dans un programme de fabrication d'images-titres pour un diaporama, pour choisir les couleurs de fond et de texte, c'est tout simple. ps pour Jean Claude: je n'était pas dans le Var mais dans le Languedoc, sur la côte, puis les Alpes de Haute Provence, temps magnifique en permanence. Et demain direction la côte atlantique pour une huitaine de jours également... mais là on prévoit un peu moins de soleil... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Encore une petite sub palette Sam 28 Sep 2013 - 16:38 | |
| Pirate ! c'est pour çà que je me suis un peu pris la tête. Tu me dois un tube de paracétamol et l'apéro Au passage pour les moins courageux, je vous livre mon essai de cette Sub. - Code:
-
dim v%,G%,B%,R% palette() resultat() end
sub resultat() v% = VAL(CLIPBOARD_STRING_PASTE$) R% = INT(v%/65536): G% = BIN_AND(v%,65280)/256: B% = BIN_AND(v%,255) caption 0," "+str$(R%)+" "+str$(G%)+" "+str$(B%) end_sub
SUB Palette() ' Choix d'une couleur parmi 216 (couleurs de base Html), résultat dans ' le clipboard sous la forme d'une chaîne de valeur: R*65536 + G*256 + B IF LABEL("Chx_Coul") = 0 THEN LABEL Chx_Coul DIM_LOCAL i%,j%,x%,y%,r%,g%,b%,wf%,hf%,wc%,hc%,ix%,f%: f% = 3000 ix% = 0: wf% = 30: hf% = 16: wc% = 6*wf%: hc% = 36*hf% FORM f%: TOP f%, 0: LEFT f%, 0: BORDER_SMALL f% CAPTION f%, "- PALETTE DE 216 COULEURS -" WIDTH f%, wc%+16: HEIGHT f%, hc%+34 PICTURE f%+1: PARENT f%+1,f%: WIDTH f%+1, wc%: HEIGHT f%+1,hc% ON_CLICK f%+1,Chx_Coul 2D_TARGET_IS f%+1: r% = 0: g% = 0: b% = 0 FOR j% = 0 TO 35 y% = j%*hf% FOR i% = 0 TO 5 x% = i%*wf% 2D_FILL_COLOR r%,g%,b%: 2D_RECTANGLE x%,y%,x%+wf%-1,y%+hf%-1 b% = b% + HEX("33") IF b% > 255 b% = 0: g% = g% + HEX("33") IF g% > 255 THEN g% = 0: r% = r% + HEX("33") END_IF NEXT i% NEXT j% WHILE ix% = 0: WAIT 300: END_WHILE: ' attente de clic 2D_TARGET_IS 0: DELETE f%: EXIT_SUB Chx_Coul: x% = MOUSE_X_POSITION(f%+1): y% = MOUSE_Y_POSITION(f%+1) r% = COLOR_PIXEL_RED(f%+1,x%,y%) g% = COLOR_PIXEL_GREEN(f%+1,x%,y%) b% = COLOR_PIXEL_BLUE(f%+1,x%,y%) CLIPBOARD_STRING_COPY STR$(65536*r%+256*g%+b%): ix% = 1 RETURN END_SUB A+ PS: Le Languedoc c'est bien ensoleillé aussi mais c'est venteux, Les Alpes de haute Provence çà c'est super ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Encore une petite sub palette Sam 28 Sep 2013 - 20:51 | |
| Pour l'apéro, aucun problème ! Pour la pharmacie tu te débrouilleras tout seul !Et en me relisant je vois que j'ai fait une belle faute (d'inattention) en écrivant... je n'étai t pas dans le Var... décidément j'ai besoin de vacances... allez, j'y retourne ! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Encore une petite sub palette Sam 28 Sep 2013 - 21:02 | |
| En voyant le n’était pas, j’ai cru comprendre que tu parlais à propos de ce monsieur je !! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Encore une petite sub palette Sam 28 Sep 2013 - 21:13 | |
| Testé, ça marche très bien | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Encore une petite sub palette Sam 28 Sep 2013 - 21:44 | |
| Merci jicehel. @papydall effectivement, maintenant que tu le dis, peut-être bien que monsieur 'je' n'y était pas non plus (c'est sans doute ce que j'avais voulu dire, du moins mon subconscient... ) | |
| | | Mumu
Nombre de messages : 176 Localisation : 45 Date d'inscription : 20/12/2012
| Sujet: Re: Encore une petite sub palette Sam 28 Sep 2013 - 22:01 | |
| Belle petite sub. Mais pour passer au compilateur il faudra régler le pb du label(). D'ailleurs ça me parait hasardeux d'utiliser un label comme ça dans une sub... Mais c'est peut être mon coté ronchon qui transparait... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Encore une petite sub palette Sam 28 Sep 2013 - 22:09 | |
| @Mumu, Alors comme çà tu un as un coté ronchon, Hé bien tu serais bien le seul ! (Perso: j'ai du mal a en trouver d'autres) Mettre un label dans une SUB, çà ne me dérange pas dans la mesure où la version Panoramic, utilisée, le permet. On verra bien avec le compilateur, mais pour le moment on peut toujours coder avec ce qu'on a. A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Encore une petite sub palette Sam 28 Sep 2013 - 22:46 | |
| Moi non plus ça ne me dérange pas, la preuve ! Si c'est vraiment nécessaire, on pourrait probablement l'éviter en faisant une boucle qui surveille et attend le clic souris (sans on_click). C'est pas le tout, je pars en vacances demain, moi ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Encore une petite sub palette Dim 29 Sep 2013 - 0:34 | |
| T'as bien raison JL35, la retraite çà fatigue, un peu de vacances (tout les 8 jours apparemment) çà ne peut que requinquer le bon'homme. Bonnes vacances, bon moi je vais me requinquer également. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Encore une petite sub palette Lun 7 Oct 2013 - 21:38 | |
| Pour faire plaisir à Mumu et à son côté ronchon (et aussi je l'avoue parce que c'est bien plus rationnel ), j'ai supprimé le sous-programme et son étiquette, l'attente du clic souris sur une couleur se fait dans une boucle While/End While. En plus c'est plus court ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 7 Oct 2013 - 23:40 | |
| Belle Sub JL35,
Je la publierai ce mois ci sur le site si tu es d' accord. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Encore une petite sub palette Mar 8 Oct 2013 - 13:59 | |
| Merci ygeronimi.
Et bien évidemment que je suis d'accord, et tu peux considérer que cet accord est valable pour tout ce que j'ai publié jusqu'ici et pour tout ce que je publierai dans l'avenir, si tu considères que ça a un intérêt pour la communauté (avec mes compliments pour tout ce que tu fais pour le mag). | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re: Encore une petite sub palette Mar 8 Oct 2013 - 17:11 | |
| Merci JL35.
Malheureusement je n' ai pas trop le temps de le remonter mais je surveille le forum et les subs qui y sont proposées. Quand il y en a une, j' attends un peu que tout le monde y est mis son grain de sel et qu' elle soit jugée aboutie par son auteur. Si j' y suis autorisé, et c' est le cas par tous je crois, je la mets sur le site. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Encore une petite sub palette Ven 2 Mai 2014 - 18:11 | |
| Puisque les palettes de couleurs sont à l'ordre du jour (grâce à l'ami bignono avec sa belle palette circulaire), je remets la mienne à jour (216 couleurs html), et j'ajoute une sub pour une palette 16 couleurs (les 16 couleurs de base html). C'est sous forme de sub indépendantes, et on peut positionner ces palettes n'importe où sur l'écran, indépendamment du Form 0. Le résultat est rendu dans le presse-papier. 1) Palette 216 couleurs: - Code:
-
HIDE 0 Palette216(200,600) TERMINATE
SUB Palette216(x,y) ' Choix d'une couleur dans une palette de 216 (couleurs html) affichée en x,y ' Résultat dans le clipboard sous forme d'une chaîne r,g,b (ex. "192,24,33") IF LABEL("Aff_pal216") = 0 THEN LABEL Aff_pal216 IF LABEL("Qui_pal216") = 0 THEN LABEL Qui_pal216 DIM_LOCAL a$, nf, np, nq, nt, nb, wc, hc, r, g, b, i, j wc = 15: hc = 12 nf=3000: WHILE OBJECT_EXISTS(nf)=1: nf=nf+1: END_WHILE FORM nf: TOP nf,y: LEFT nf,x: WIDTH nf,12*(wc+1)+16: HEIGHT nf,18*hc+84 BORDER_SMALL nf CAPTION nf," PALETTE 216 COULEURS HTML": ON_CLOSE nf,Qui_pal216 np=nf+1: WHILE OBJECT_EXISTS(np)=1: np=np+1: END_WHILE PICTURE np: PARENT np,nf: FULL_SPACE np: 2D_TARGET_IS np ON_CLICK np,Aff_pal216 nq=np+1: WHILE OBJECT_EXISTS(nq)=1: nq=nq+1: END_WHILE PICTURE nq: PARENT nq,nf: TOP nq,18*hc+22: LEFT nq,5: WIDTH nq,3*wc HEIGHT nq,25 nt=nq+1: WHILE OBJECT_EXISTS(nt)=1: nt=nt+1: END_WHILE ALPHA nt: PARENT nt,nf: TOP nt,TOP(nq): LEFT nt,LEFT(nq)+WIDTH(nq)+5 FONT_NAME nt,"Lucida Console" nb=nt+1: WHILE OBJECT_EXISTS(nb)=1: nb=nb+1: END_WHILE BUTTON nb: PARENT nb,nf:TOP nb,TOP(nq): WIDTH nb,50: LEFT nb,WIDTH(nf)-70 CAPTION nb,"OK" ON_CLICK nb,Qui_pal216 r = 0: g = 0: b = 0 FOR j=0 TO 17 y = j*(hc+1) FOR i = 0 TO 11 x = i*(wc+1): 2D_PEN_COLOR r,g,b: 2D_FILL_COLOR r,g,b 2D_RECTANGLE x,y,x+wc,y+hc b=b+51 IF b>255 b=0: g=g+51 IF g>255 g=0: r=r+51 END_IF END_IF NEXT i NEXT j r=0: g=0: b=0: COLOR nq,r,g,b CAPTION nt,"#00 00 00"+CHR$(10)+STR$(r)+","+STR$(g)+","+STR$(b) 2D_TARGET_IS nq: 2D_PEN_COLOR 164,164,164 WHILE 1>0: WAIT 100: TO_FOREGROUND nf: END_WHILE Aff_pal216: x=MOUSE_X_LEFT_DOWN(np): y=MOUSE_Y_LEFT_DOWN(np) r=COLOR_PIXEL_RED(np,x,y): g=COLOR_PIXEL_GREEN(np,x,y): b=COLOR_PIXEL_BLUE(np,x,y) 2D_FILL_COLOR r,g,b: 2D_RECTANGLE 0,0,WIDTH(nq),HEIGHT(nq) a$ = "#"+RIGHT$("0"+HEX$(r),2)+" "+RIGHT$("0"+HEX$(g),2)+" "+RIGHT$("0"+HEX$(b),2) a$ = a$ + CHR$(10)+STR$(r)+","+STR$(g)+","+STR$(b) CAPTION nt,a$ RETURN Qui_pal216: 2D_TARGET_IS 0: DELETE nf CLIPBOARD_STRING_COPY STR$(r)+","+STR$(g)+","+STR$(b) END_SUB 2) Palette 16 couleurs: - Code:
-
HIDE 0 Palette16(100,100) TERMINATE
SUB Palette16(x,y) ' Choix d'une couleur dans une palette de 16 (couleurs html de base) affichée en x,y ' Résultat dans le clipboard sous forme d'une chaîne r,g,b (ex. "192,24,33") IF LABEL("Aff_pal16") = 0 THEN LABEL Aff_pal16 IF LABEL("Qui_pal16") = 0 THEN LABEL Qui_pal16 DIM_LOCAL ch$(16),nc$(16) DIM_LOCAL a$, nf, np, nq, nt, nb, wc, hc, r, g, b, i, j, k DATA "Pal16" DATA "000000","000080","0000FF","008000","008080","00FF00","00FFFF","800000" DATA "800080","808000","808080","C0C0C0","FF0000","FF00FF","FFFF00","FFFFFF" DATA " black"," navy"," blue"," green"," teal"," lime"," cyan","maroon"," purple" DATA " olive"," gray"," silver"," red","magenta"," yellow"," white": ' noms standards RESTORE: READ a$: WHILE a$<>"Pal16": READ a$: END_WHILE FOR i=1 TO 16: READ ch$(i): NEXT i: FOR i=1 TO 16: READ nc$(i): NEXT i wc = 40: hc = 20 nf=3000: WHILE OBJECT_EXISTS(nf)=1: nf=nf+1: END_WHILE FORM nf: TOP nf,y: LEFT nf,x: WIDTH nf,4*(wc+1)+16: HEIGHT nf,4*(hc+14)+66 BORDER_SMALL nf CAPTION nf," - 16 COULEURS HTML -": ON_CLOSE nf,Qui_pal16 np=nf+1: WHILE OBJECT_EXISTS(np)=1: np=np+1: END_WHILE PICTURE np: PARENT np,nf: FULL_SPACE np: 2D_TARGET_IS np: PRINT_TARGET_IS np ON_CLICK np,Aff_pal16 nq=np+1: WHILE OBJECT_EXISTS(nq)=1: nq=nq+1: END_WHILE PICTURE nq: PARENT nq,nf: TOP nq,4*(hc+14)+5: LEFT nq,0: WIDTH nq,wc HEIGHT nq,25 nt=nq+1: WHILE OBJECT_EXISTS(nt)=1: nt=nt+1: END_WHILE ALPHA nt: PARENT nt,nf: TOP nt,TOP(nq): LEFT nt,LEFT(nq)+WIDTH(nq)+5 FONT_NAME nt,"Lucida Console" nb=nt+1: WHILE OBJECT_EXISTS(nb)=1: nb=nb+1: END_WHILE BUTTON nb: PARENT nb,nf:TOP nb,TOP(nq): WIDTH nb,40: LEFT nb,WIDTH(nf)-56 CAPTION nb,"OK" ON_CLICK nb,Qui_pal16 k = 1 FOR j=0 TO 3 y = j*(hc+14) FOR i = 0 TO 3 a$ = ch$(k): r=HEX(LEFT$(a$,2)): g=HEX(MID$(a$,3,2)): b=HEX(RIGHT$(a$,2)) x = i*(wc+1): 2D_PEN_COLOR r,g,b: 2D_FILL_COLOR r,g,b 2D_RECTANGLE x,y,x+wc,y+hc 2D_FILL_COLOR 255,255,255: PRINT_LOCATE x,y+hc: PRINT nc$(k) k = k+1 NEXT i NEXT j r=0: g=0: b=0: COLOR nq,r,g,b CAPTION nt,"#00 00 00"+CHR$(10)+STR$(r)+","+STR$(g)+","+STR$(b) 2D_TARGET_IS nq: 2D_PEN_COLOR 164,164,164 WHILE 1>0: WAIT 100: TO_FOREGROUND nf: END_WHILE Aff_pal16: x=MOUSE_X_LEFT_DOWN(np): y=MOUSE_Y_LEFT_DOWN(np) r=COLOR_PIXEL_RED(np,x,y): g=COLOR_PIXEL_GREEN(np,x,y): b=COLOR_PIXEL_BLUE(np,x,y) 2D_FILL_COLOR r,g,b: 2D_RECTANGLE 0,0,WIDTH(nq),HEIGHT(nq) a$ = "#"+RIGHT$("0"+HEX$(r),2)+" "+RIGHT$("0"+HEX$(g),2)+" "+RIGHT$("0"+HEX$(b),2) a$ = a$ + CHR$(10)+STR$(r)+","+STR$(g)+","+STR$(b) CAPTION nt,a$ RETURN Qui_pal16: 2D_TARGET_IS 0: DELETE nf CLIPBOARD_STRING_COPY STR$(r)+","+STR$(g)+","+STR$(b) END_SUB | |
| | | Contenu sponsorisé
| Sujet: Re: Encore une petite sub palette | |
| |
| | | | Encore une petite sub palette | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |