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 |
|
|
| Boutons à la demande | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Boutons à la demande Mar 6 Mar 2012 - 22:47 | |
| Pas vraiment révolutionnaire, donc je mets ça ici... Le but est de fabriquer un bouton à la demande, de la couleur voulue, et comportant éventuellement plusieurs lignes de texte: le sous-programme: - Code:
-
' Boutons à la demande LABEL Bouton, Pourvoir DIM n, xb, yb, lb, hb, tb$, i%, j%, k% n = 10: lb = 120: hb = 50: xb = 70: yb = 10 tb$ = "Bouton avec#plusieurs lignes#de texte" GOSUB Bouton: ON_CLICK n, Pourvoir button 20: top 20, 10: left 20, 200: width 20, 90: caption 20, "Bouton classique" END
Bouton: ' paramètres en entrée: n, xb, yb, lb, hb, tb$ (caption) DIM rbt, gbt, bbt, nbt, ibt, jbt, kbt, tbt$(10) rbt=192: gbt=192: bbt=192: ' couleur du bouton: gris rbt=164: gbt=255: bbt=255: ' idem, cyan PICTURE n: TOP n, yb: LEFT n, xb: WIDTH n, lb: HEIGHT n, hb 2D_TARGET_IS n: PRINT_TARGET_IS n 2D_FILL_COLOR rbt,gbt,bbt: 2D_PEN_COLOR rbt/2,gbt/2,bbt/2 2D_PEN_WIDTH 2: 2D_RECTANGLE 0,0,WIDTH(n),HEIGHT(n): 2D_PEN_WIDTH 1 2D_PEN_COLOR 255,255,255: 2D_LINE 1,hb-2,1,1: 2D_POLY_TO lb-2,1 nbt = 0 kbt = INSTR(tb$, "#"): ' séparateur de lignes éventuel WHILE kbt > 0 nbt = nbt+1: tbt$(nbt) = LEFT$(tb$,kbt-1): tb$ = MID$(tb$, kbt+1, 100) kbt = INSTR(tb$, "#") END_WHILE nbt = nbt+1: tbt$(nbt) = tb$ ibt = TEXT_WIDTH(tb$,n): jbt = TEXT_HEIGHT(tb$,n) FOR kbt = 1 TO nbt ibt = TEXT_WIDTH(tbt$(kbt),n) PRINT_LOCATE (lb-ibt)/2,(kbt-1)*jbt+(hb-jbt*nbt)/2: PRINT tbt$(kbt) NEXT kbt 2D_TARGET_IS 0: PRINT_TARGET_IS 0 FREE rbt: FREE gbt: FREE bbt: FREE ibt: FREE jbt: FREE kbt: FREE tbt$ RETURN Pourvoir: DIM ldn, hdn 2D_TARGET_IS n: 2D_PEN_COLOR 0,0,0: ldn = WIDTH(n): hdn = HEIGHT(n) 2D_LINE 1,hdn-2,1,1: 2D_POLY_TO ldn-2,1 2D_PEN_COLOR 255,255,255: 2D_LINE 2,hdn-2,ldn-2,hdn-2:2D_POLY_TO ldn-2,2 WAIT 500: 2D_LINE 1,hdn-2,1,1: 2D_POLY_TO ldn-2,1 2D_PEN_COLOR 0,0,0: 2D_LINE 2,hdn-2,ldn-2,hdn-2:2D_POLY_TO ldn-2,2 2D_TARGET_IS 0 print "Cliqué !" FREE ldn: FREE hdn RETURN PS j'avais mis comme séparateur de lignes le caractère "<", mais ici (sur le forum), entre les balises 'code' ça met complètement la pagaille et ça tronque le texte... alors j'ai mis "|" (pour ici).
Dernière édition par JL35 le Mer 7 Mar 2012 - 13:59, édité 3 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Boutons à la demande Mer 7 Mar 2012 - 1:36 | |
| Toujours pratique a avoir Ca marche très bien | |
| | | lodchjo
Nombre de messages : 162 Age : 53 Localisation : Anvers Date d'inscription : 26/12/2011
| Sujet: Re: Boutons à la demande Mer 7 Mar 2012 - 9:01 | |
| Coucou! Petite modification pour simuler le mouvement d'un bouton traditionel cliqué: J'ai rajouté une ligne dans la procedure "Pourvoir:" - Code:
-
Pourvoir: TOP n, yb+1: LEFT n, xb+1: WIDTH n, lb-2: HEIGHT n, hb-2:wait 200:TOP n, yb: LEFT n, xb: WIDTH n, lb: HEIGHT n, hb print "Cliqué !" RETURN
A+! Lode | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Boutons à la demande Mer 7 Mar 2012 - 11:06 | |
| Intéressant, comme toujours. Ce s/p bouton c'est pour insérer dans une des futures bibliothèques... quand on pourra en faire ! J'ai appliqué ta méthode pour le cliqué en l'accentuant encore, optimisé pour les couleurs (et mis le caractère dièse '#' plus voyant au lieu de '|' comme séparateur de lignes). Mais de toute façon la visualisation de l'enfoncement du bouton est un gadget pour la démo, mais inapplicable dans la réalité, au moment du clic on ne connaît plus en général les dimensions du bouton cliqué. Si on peut les retrouver (comme j'ai appliqué ci-dessus), c'est quand même un peu gadget mais c'est possible ! | |
| | | Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Boutons à la demande Dim 11 Mar 2012 - 15:59 | |
| Hallo Panoramics, @ JL35 Sehr schöner Code. Sehr genial. Ich prüfe den Code um ihn zu verstehen. Dabei habe ich folgende Idee: Kann ein Bild und der Text auf die Pseudotaste gebracht werden? @ Bignono Eureka! der Doppel-Klick! Sehr schöner Code. Sehr genial. Ich prüfe den Code um ihn zu verstehen. Dabei habe ich folgende Idee: Kombination von Pseudotaste und Doppelklick. Severin der Sonntagsprogrammierer Salut Panoramics, @JL35 Code très beau. Très génial. J'examine le code autour de lui comprendre. Avec cela, j'ai l'idée suivante : Est-ce que une image et le texte sur la touche pseudo peut être apportée ? @Bignono Eureka! le double-clic! Code très beau. Très génial. J'examine le code autour de lui comprendre. Avec cela, j'ai l'idée suivante : Combinaison de la touche pseudo et du double-clic. Séverin le programmeur de dimanche Hello, Panoramics, @JL35 Very nice code. Very brilliantly(ingeniously). I check the code around him to understand. Besides, I have the following idea: Can a picture and the text on the pseudo key be brought? @Bignono Eureka! the double click! Very nice code. Very brilliantly(ingeniously). I check the code around him to understand. Besides, I have the following idea: Combination of pseudo key and double click. Severin the Sunday programmer | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Boutons à la demande Dim 11 Mar 2012 - 16:21 | |
| Bonjour Severin, programmeur du dimanche, et merci pour ton appréciation. Bien sûr on peut ajouter une image sur le bouton, puisque c'est un Picture, on peut y mettre n'importe quel graphisme ou dessiner dessus. Thank you Severin for your kind appreciation. Obviously we can put pictures, text, design upon the pseudo-button, because it is a Picture object. | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Boutons à la demande Dim 11 Mar 2012 - 19:14 | |
| bonjour Séverin (Désolé d'utiliser ton post JL35) Si tu utilises le programme du double click, dans une boucle while...end_while ou bien repeat...until pense à activer avant avec on_click le sous programme et à le désactiver après avec off_click, sinon tu auras des erreurs qui se produiront. Bon courage et bonne programmation à toi! | |
| | | Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Boutons à la demande Dim 11 Mar 2012 - 20:37 | |
| @ JL35 Frage wie Text und JPG verbinden ? Entschundigung aber ich habe den Code noch nicht komplett verstanden. Severin Eventuell in den obigen Code einfügen, mit REM. @JL35 La question comme le texte et JPG lient ? L'Entschundigung cependant j'a compris pas encore complètement le code. Séverin Insèrent éventuellement dans le code mentionné ci-dessus, avec REM. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Boutons à la demande Dim 11 Mar 2012 - 21:19 | |
| Severin, il n'y a pas de miracle, le dessin et le texte ne sont pas liés entre eux, il faut dessiner soi-même dans le bouton si on veut une image, ou alors en importer une par 2d_Image_Paste n,x,y par exemple, avant d'écrire le texte. C'est artisanal, mais c'est possible. Je reprends l'exemple ci-dessus, avec le dernier dessin: - Code:
-
' Boutons à la demande LABEL Bouton, Pourvoir DIM n, xb, yb, lb, hb, tb$, i%, j%, k% n = 10: lb = 120: hb = 40: xb = 70: yb = 10 tb$ = "Opération#interdite" GOSUB Bouton: ON_CLICK n, Pourvoir button 20: top 20, 10: left 20, 200: width 20, 90: caption 20, "Bouton classique" END
Bouton: ' paramètres en entrée: n, xb, yb, lb, hb, tb$ (caption) DIM rbt, gbt, bbt, nbt, ibt, jbt, kbt, tbt$(10) rbt=192: gbt=192: bbt=192: ' couleur du bouton: gris rbt=164: gbt=255: bbt=255: ' idem, cyan PICTURE n: TOP n, yb: LEFT n, xb: WIDTH n, lb: HEIGHT n, hb 2D_TARGET_IS n: PRINT_TARGET_IS n 2D_FILL_COLOR rbt,gbt,bbt: 2D_PEN_COLOR rbt/2,gbt/2,bbt/2 2D_PEN_WIDTH 2: 2D_RECTANGLE 0,0,WIDTH(n),HEIGHT(n) 2D_PEN_COLOR 255,0,0: 2D_FILL_COLOR 255,0,0 2D_CIRCLE 18,18,14: 2D_PEN_COLOR 255,255,255: 2D_PEN_WIDTH 6: 2D_LINE 10,18,26,18 2D_FILL_COLOR rbt,gbt,bbt: 2D_PEN_WIDTH 1 2D_PEN_COLOR 255,255,255: 2D_LINE 1,hb-2,1,1: 2D_POLY_TO lb-2,1 nbt = 0 kbt = INSTR(tb$, "#"): ' séparateur de lignes éventuel WHILE kbt > 0 nbt = nbt+1: tbt$(nbt) = LEFT$(tb$,kbt-1): tb$ = MID$(tb$, kbt+1, 100) kbt = INSTR(tb$, "#") END_WHILE nbt = nbt+1: tbt$(nbt) = tb$ ibt = TEXT_WIDTH(tb$,n): jbt = TEXT_HEIGHT(tb$,n) FOR kbt = 1 TO nbt ibt = TEXT_WIDTH(tbt$(kbt),n) PRINT_LOCATE (lb-ibt)/2,(kbt-1)*jbt+(hb-jbt*nbt)/2: PRINT tbt$(kbt) NEXT kbt 2D_TARGET_IS 0: PRINT_TARGET_IS 0 FREE rbt: FREE gbt: FREE bbt: FREE ibt: FREE jbt: FREE kbt: FREE tbt$ RETURN Pourvoir: DIM ldn, hdn 2D_TARGET_IS n: 2D_PEN_COLOR 0,0,0: ldn = WIDTH(n): hdn = HEIGHT(n) 2D_LINE 1,hdn-2,1,1: 2D_POLY_TO ldn-2,1 2D_PEN_COLOR 255,255,255: 2D_LINE 2,hdn-2,ldn-2,hdn-2:2D_POLY_TO ldn-2,2 WAIT 500: 2D_LINE 1,hdn-2,1,1: 2D_POLY_TO ldn-2,1 2D_PEN_COLOR 0,0,0: 2D_LINE 2,hdn-2,ldn-2,hdn-2:2D_POLY_TO ldn-2,2 2D_TARGET_IS 0 print "Cliqué !" FREE ldn: FREE hdn RETURN Bonsoir bignono, aucun problème, le post est ouvert, et en plus c'est un inutilitaire ! | |
| | | Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Boutons à la demande Dim 11 Mar 2012 - 22:36 | |
| @ Bignono Deine und alle Komentare von Panoramics sind willkommen. @ JL35 Danke, aber so meinte ich es nicht. Ich habe mir die freien - Vista Icons Pack 3.0 - geladen. Ca. 1000 Icons. Diese Icons mit Text auf eine Pseudotaste platzieren. Eventuell Hauptbild mit zwei aufgesetzten Bildern. Erstes Bild der Hintergrund. Zweites Bild das Icon. Drittes Bild der Text. Severin @Bignono Les tes et tous Komentare de Panoramics sont bienvenus. @JL35 Merci, mais ainsi je ne l'avais pas en vue. Je me suis chargé les libres - Vista Icons le paquet 3.0-. Environ 1000 Icons. Ces Icons avec le texte sur une touche pseudo placent. Eventuellement l'image principale avec deux images se posées. La première image le fond. La deuxième image Icon. La troisième image le texte. Séverin @Bignono Your and all Komentare of Panoramics are welcome. @JL35 Thanks, but thus I did not mean it. I have burdened myself the free - Vista Icons stack 3.0-. Approx. 1000 Icons. These Icons with text on a pseudo key place. Perhaps, main picture with two put on(arranged) pictures. The first picture the background. The second picture the Icon. The third picture the text. Severin | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Boutons à la demande Dim 11 Mar 2012 - 22:46 | |
| Oui Severin, il y a sûrement possibilité d'utiliser des icônes (comme je disais par 2d_Image_paste par exemple), comme le pseudo-bouton est un Picture on peut faire tout ce qu'on veut. Mais on ne sait pas superposer un texte sur une image sans détruire l'image. Ou alors dessiner le texte pixel par pixel, mais c'est un peu laborieux. Gute nacht ! | |
| | | Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Boutons à la demande Lun 12 Mar 2012 - 16:04 | |
| Hier mein erster Test. Ersetze Startbild.JPG durch ein eigenes. Ich forsche weiter. Severin Ici mon premier essai. Le Startbild.JPG remplace par un propre. Je recherche plus encore. Severin Here my first test. Replace Startbild.JPG by an own. I continue to research. Severin Neu: 12.3.2012 16:24 - Code:
-
' ****************************************************************************** ' DIM DIR_A$ DIR_A$ = "c:\" ' ' *** PROGRAMM STARTEN ******************************************************** ' DIM SCREEN_X1 DIM SCREEN_Y1 ' DIM Bildbreite DIM Bildhoehe ' ' ****************************************************************************** ' *** DATEIEN AUS UNTERVERZEICHNIS -Bilder - LADEN **************************** ' DIM Speicherplatz_Bild01$ Speicherplatz_Bild01$ = DIR_A$ + "1PC-ZEIT\03_PC-Zeit_BILDER\Startbild.JPG" ' DIM Speicherplatz_Bild02$ Speicherplatz_Bild02$ = DIR_A$ + "1PC-ZEIT\03_PC-Zeit_BILDER\Startbild.JPG" ' DIM Speicherplatz_Bild03$ Speicherplatz_Bild03$ = DIR_A$ + "1PC-ZEIT\03_PC-Zeit_BILDER\Startbild.JPG" ' ' ****************************************************************************** ' *** FORM 000 DEFINIEREN UND ANZEIGEN BLEIBT IMMER BESTEHEN ******************* ' FORM 000 ' TOP 000,0000 LEFT 000,0000 WIDTH 000,SCREEN_X HEIGHT 000,SCREEN_Y color 000,000,255,000 ' border_normal 000 ' ' ****************************************************************************** ' *** BILD1 AUF FORM 000 ANZEIGEN ********************************************** ' COMMAND_TARGET_IS 000 picture 99 ' TOP 99,INT(SCREEN_Y/2-225) : REM HÖHE FENSTER LEFT 99,INT(SCREEN_X/2-225) : REM BREITE FENSTER WIDTH 99,400 : REM ......BREITE 1680 HEIGHT 99,400 : REM ......HÖHE 1050 FILE_LOAD 99,Speicherplatz_Bild01$ STRETCH_ON 99 : REM SHOW 99 : REM ' ' stop ' ****************************************************************************** ' *** BILD2 AUF FORM 000 ANZEIGEN ********************************************** ' COMMAND_TARGET_IS 000 picture 98 ' TOP 98,INT(SCREEN_Y/2-225) : REM HÖHE FENSTER LEFT 98,INT(SCREEN_X/2-225) : REM BREITE FENSTER WIDTH 98,400 : REM ......BREITE 1680 HEIGHT 98,200 : REM ......HÖHE 1050 FILE_LOAD 98,Speicherplatz_Bild02$ STRETCH_ON 98 : REM SHOW 98 : REM ' ' stop ' ****************************************************************************** ' *** BILD3 AUF FORM 000 ANZEIGEN ********************************************** ' COMMAND_TARGET_IS 000 picture 97 ' TOP 97,INT(SCREEN_Y/2-025) : REM HÖHE FENSTER LEFT 97,INT(SCREEN_X/2-225) : REM BREITE FENSTER WIDTH 97,400 : REM ......BREITE 1680 HEIGHT 97,200 : REM ......HÖHE 1050 FILE_LOAD 97,Speicherplatz_Bild03$ STRETCH_ON 97 : REM SHOW 97 : REM ' Inactive 98 Inactive 97
' stop
on_click 99,clicken ' end
clicken:
Print "gedrückt"
stop | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Manufacture de boutons Mar 13 Mar 2012 - 18:48 | |
| Cette fois-ci il y a la chaîne complète: 1) La fabrication des icônes destinées à être affichées sur des boutons. 2) L'affichage de pseudo-boutons comportant du texte, éventuellement sur plusieurs lignes, et éventuellement une icône pour agrémenter ou expliciter le bouton (même utilisation que les BUTTON Panoramic). 1) La manufacture de fabrication des icônes3 formats différents possibles: 16x16, 24x24 ou 32x32, avec 8 couleurs plus une couleur transparente. Une fois dessinée, l'icône peut être copiée dans le clipboard sous forme de lignes de datas, qu'il suffit ensuite de 'coller' dans le programme utilisateur (ici, le programme 'Bouton' qui suit). On pourrait facilement ajouter l'écriture dans un fichier, pour faire une collection, c'est à voir. - Code:
-
' Desic.bas: dessin d'icônes simplifiées pour illustration de boutons personnels ' ou tout autre usage. ' Affichage des icônes avec le s/p Desico donné plus loin. LABEL Format, Desgril, Desoc, Decal, Recop, Undo, Dat2Clip, Chct, Coutil, Import LABEL Redcoul, Clipico, Aide DIM dic, pas, lfp, tpp, ctr, ctg, ctb, cfr, cfg, cfb, etr DIM cr, cg, cb, xcl%, ycl%, x1%, y1%, x2%, y2%, i%, j%, k%, a$, b$, dct, dcf DIM wpi%, hpi%, q%, cll%(10), clo%, n, r, outil, fi$, iv$ ' couleurs: Noir, Rouge, Vert, Bleu, Jaune, Magenta, Cyan, Blanc, Transparent (8)- cll%(0)=0: cll%(1)=255*65536:cll%(2)=255*256:cll%(3)=255:cll%(4)=65536*255+256*255 cll%(5)=65536*255+255:cll%(6)=256*255+255:cll%(7)=65536*255+256*255+255 iv$ = "C:\Progra~2\Irfanv~1\i_view32.exe "
COLOR 0,192,255,255: FONT_BOLD 0 CONTAINER_OPTION 10: TOP 10, 0: LEFT 10,10: WIDTH 10, 80: HEIGHT 10, 92 CAPTION 10, " Icône: " OPTION 11: PARENT 11,10: TOP 11,14: LEFT 11,10: WIDTH 11,60: CAPTION 11, "16x16" OPTION 12: PARENT 12,10: TOP 12,29: LEFT 12,10: WIDTH 12,60: CAPTION 12, "24x24" OPTION 13: PARENT 13,10: TOP 13,44: LEFT 13,10: WIDTH 13,60: CAPTION 13, "32x32" OPTION 14: PARENT 14,10: TOP 14,59: LEFT 14,10: WIDTH 14,60: CAPTION 14, "48x48" OPTION 15: PARENT 15,10: TOP 15,73: LEFT 15,10: WIDTH 15,60: CAPTION 15, "64x64" dic = 32: MARK_ON 13 FOR i% = 11 TO 15: ON_CLICK i%, Format: NEXT i% SPIN 20: TOP 20, 93: LEFT 20,10: WIDTH 20, 40: POSITION 20,1 MIN 20, 1: MAX 20,20 ALPHA 21: TOP 21, 97: LEFT 21, 55: CAPTION 21, "Épaisseur trait" PICTURE 30: TOP 30,120: LEFT 30,80: WIDTH 30,24: HEIGHT 30,20: COLOR 30,0,0,0 PICTURE 31: TOP 31,120: LEFT 31,110: WIDTH 31,24: HEIGHT 31,20: COLOR 31,255,0,0 PICTURE 32: TOP 32,120: LEFT 32,140: WIDTH 32,24: HEIGHT 32,20: COLOR 32,0,255,0 PICTURE 33: TOP 33,145: LEFT 33,80: WIDTH 33,24: HEIGHT 33,20: COLOR 33,0,0,255 PICTURE 34: TOP 34,145: LEFT 34,110: WIDTH 34,24: HEIGHT 34,20: COLOR 34,255,255,0 PICTURE 35: TOP 35,145: LEFT 35,140: WIDTH 35,24: HEIGHT 35,20: COLOR 35,255,0,255 PICTURE 36: TOP 36,170: LEFT 36,80: WIDTH 36,24: HEIGHT 36,20: COLOR 36,0,255,255 PICTURE 37: TOP 37,170: LEFT 37,110: WIDTH 37,24: HEIGHT 37,20: COLOR 37,255,255,255 PICTURE 38: TOP 38,170: LEFT 38,140: WIDTH 38,24: HEIGHT 38,20: COLOR 38,192,192,192 2D_TARGET_IS 38:2D_LINE 0,0,24,24: 2D_LINE 0,24,24,0 PICTURE 39: TOP 39,130: LEFT 39,20: WIDTH 39,40: HEIGHT 39,20: COLOR 39,0,0,0 PICTURE 40: TOP 40,170: LEFT 40,20: WIDTH 40,40: HEIGHT 40,20: COLOR 40,255,255,255 dct = 0: dcf = 0 ALPHA 41: TOP 41,115: LEFT 41, 5: CAPTION 41, "Coul. trait:" ALPHA 42: TOP 42,155: LEFT 42,5: CAPTION 42, "Coul. rempl.:" FOR i% = 30 TO 42: ON_CLICK i%, Chct: NEXT i%
ALPHA 49: TOP 49, 195: LEFT 49, 10: CAPTION 49, "------------ OUTILS ------------" PICTURE 50: TOP 50,210: LEFT 50,10: WIDTH 50, 30: HEIGHT 50,30: COLOR 50,192,192,192 PICTURE 51: TOP 51,210: LEFT 51,50: WIDTH 51,30: HEIGHT 51,30: COLOR 51,192,192,192 PICTURE 52: TOP 52,210: LEFT 52,90: WIDTH 52,30: HEIGHT 52,30: COLOR 52,192,192,192 PICTURE 53: TOP 53,210: LEFT 53,130: WIDTH 53,30: HEIGHT 53,30: COLOR 53,192,192,192 PICTURE 54: TOP 54,245: LEFT 54,10: WIDTH 54,30: HEIGHT 54,30: COLOR 54,192,192,192 PICTURE 55: TOP 55,245: LEFT 55,50: WIDTH 55,30: HEIGHT 55,30: COLOR 55,192,192,192 PICTURE 56: TOP 56,245: LEFT 56,90: WIDTH 56,30: HEIGHT 56,30: COLOR 56,192,192,192 PICTURE 57: TOP 57,245: LEFT 57,130: WIDTH 57,30: HEIGHT 57,30: COLOR 57,192,192,192 FOR i% = 50 TO 57: ON_CLICK i%, Coutil: NEXT i% 2D_PEN_COLOR 0,0,0: 2D_FILL_COLOR 192,192,192: 2D_PEN_WIDTH 2 2D_TARGET_IS 50: 2D_PEN_WIDTH 2: 2D_RECTANGLE 14,14,17,17 2D_TARGET_IS 51: 2D_PEN_WIDTH 2: 2D_LINE 5,22,25,8 2D_TARGET_IS 52: 2D_FILL_COLOR 192,192,192: 2D_PEN_WIDTH 2: 2D_RECTANGLE 4,8,28,24 2D_TARGET_IS 53: 2D_FILL_COLOR 164,164,164: 2D_PEN_WIDTH 2: 2D_RECTANGLE 4,8,28,24 2D_TARGET_IS 54: 2D_FILL_COLOR 192,192,192: 2D_PEN_WIDTH 2: 2D_CIRCLE 15,15,11 2D_TARGET_IS 55: 2D_FILL_COLOR 164,164,164: 2D_PEN_WIDTH 2: 2D_CIRCLE 15,15,11 2D_TARGET_IS 56: 2D_FILL_COLOR 164,164,164: 2D_PEN_WIDTH 2: 2D_LINE 8,4,26,10 2D_POLY_TO 22,22: 2D_POLY_TO 4,16: 2D_POLY_TO 8,4: 2D_LINE 24,16,6,16 2D_POLY_TO 6,26: 2D_LINE 2,26,14,26 PRINT_TARGET_IS 57: FONT_BOLD 57: PRINT_LOCATE 2,9: PRINT "RAZ" FOR outil = 50 TO 57 2D_TARGET_IS outil: 2D_PEN_WIDTH 2 IF outil = 50 2D_PEN_COLOR 255,0,0 ELSE 2D_PEN_COLOR 164,164,164 END_IF 2D_LINE 1,1,29,1:2D_POLY_TO 29,29:2D_POLY_TO 1,29: 2D_POLY_TO 1,1 NEXT outil outil = 50 ALPHA 58: TOP 58,285: LEFT 58,10: CAPTION 58,"Décalage"+CHR$(10)+"de 1 pixel:" PICTURE 59: TOP 59,290: LEFT 59,80: WIDTH 59,20: HEIGHT 59,20 PICTURE 60: TOP 60,280: LEFT 60,105: WIDTH 60,20: HEIGHT 60,20 PICTURE 61: TOP 61,305: LEFT 61,105: WIDTH 61,20: HEIGHT 61,20 PICTURE 62: TOP 62,290: LEFT 62,130: WIDTH 62,20: HEIGHT 62,20 FOR i% = 59 TO 62 COLOR i%, 192,192,192: 2D_TARGET_IS i%: 2D_FILL_COLOR 192,192,192 2D_PEN_COLOR 128,128,128: 2D_RECTANGLE 0,0,WIDTH(i%),HEIGHT(i%) PRINT_TARGET_IS i%: FONT_NAME i%,"Symbol": FONT_SIZE i%,12: FONT_BOLD i% SELECT i% CASE 59: PRINT CHR$(172) CASE 60: PRINT_LOCATE 4,0: PRINT CHR$(173) CASE 61: PRINT_LOCATE 4,0: PRINT CHR$(175) CASE 62: PRINT CHR$(174) END_SELECT ON_CLICK i%, Decal NEXT i%
BUTTON 64: TOP 64, 330: LEFT 64, 50: WIDTH 64, 70: HEIGHT 64,20: CAPTION 64, "Undo" ON_CLICK 64, Undo
ALPHA 65: TOP 65, 375: LEFT 65, 10: CAPTION 65, "Importer une image (clic):" EDIT 66: TOP 66, 390: LEFT 66, 10:WIDTH 66, 150 ON_CLICK 66, Import BUTTON 67: TOP 67, 420: LEFT 67, 10: WIDTH 67, 150: HEIGHT 67, 20 CAPTION 67, "CIPBOARD -> ICONE": ON_CLICK 67, Clipico
ALPHA 70: TOP 70, 450: LEFT 70, 10: CAPTION 70, "Nom de l'icône résultat:" EDIT 71: TOP 71, 465: LEFT 71, 10: WIDTH 71, 150 BUTTON 72: TOP 72, 490: LEFT 72, 10: WIDTH 72, 150: HEIGHT 72, 20 CAPTION 72, "DATAS -> CLIPBOARD": ON_CLICK 72, Dat2Clip
BUTTON 80: TOP 80, 2: LEFT 80, WIDTH(0)-78: WIDTH 80, 61: CAPTION 80, "Aide" ON_CLICK 80, Aide
IMAGE 89: ' sauvegarde pour undo
pas = 12 etr = 1: ' épaisseur trait ctr = 0: ctg = 0: ctb = 255: ' couleur trait cfr = 255: cfg = 255: cfb = 0: ' couleur fond lfp = 180: tpp = 30 PICTURE 100: TOP 100,tpp: LEFT 100, lfp: ON_CLICK 100, Desoc PICTURE 101: TOP 101,tpp: LEFT 101, lfp-dic-10: WIDTH 101, dic: HEIGHT 101, dic 2D_IMAGE_COPY 89,0,0,WIDTH(101),HEIGHT(101) GOSUB Desgril
END
Format: FOR i% = 11 TO 15 IF CHECKED(i%) = 1 THEN EXIT_FOR NEXT i% SELECT i% CASE 11: j% = 16 CASE 12: j% = 24 CASE 13: j% = 32 CASE 14: j% = 48 CASE 15: j% = 64 END_SELECT IF j% <> dic THEN dic = j%: GOSUB Desgril RETURN
Desgril: IF dic < 48 WIDTH 0,600: HEIGHT 0,550: pas = 12 ELSE IF dic < 64 WIDTH 0, 680: HEIGHT 0, 550 ELSE WIDTH 0, 850: HEIGHT 0, 720 END_IF pas = 10 END_IF WIDTH 100, dic*pas: HEIGHT 100,dic*pas 2D_TARGET_IS 0: 2D_FILL_COLOR 0,0,0: 2D_RECTANGLE lfp-dic-12,tpp-2,lfp-8,tpp+dic+2 LEFT 101, lfp-dic-10: WIDTH 101, dic: HEIGHT 101, dic 2D_TARGET_IS 101: CLS 2D_TARGET_IS 100: 2D_PEN_COLOR 128,128,128: 2D_RECTANGLE 0,0,WIDTH(100),HEIGHT(100) FOR j% = 0 TO HEIGHT(100) STEP pas: 2D_LINE 0,j%,WIDTH(100),j%: NEXT j% FOR i% = 0 TO WIDTH(100) STEP pas: 2D_LINE i%,0,i%,HEIGHT(100): NEXT i% 2D_PEN_COLOR 255,128,255: 2D_LINE 0,HEIGHT(100)/2,WIDTH(100),HEIGHT(100)/2 2D_LINE WIDTH(100)/2,0,WIDTH(100)/2,HEIGHT(100) RETURN
Desoc: xcl% = INT(MOUSE_X_POSITION(100)/pas): ycl% = INT(MOUSE_Y_POSITION(100)/pas) ctr = COLOR_PIXEL_RED(39,10,1): ctg = COLOR_PIXEL_GREEN(39,10,1) ctb = COLOR_PIXEL_BLUE(39,10,1): cfr = COLOR_PIXEL_RED(40,10,1) cfg = COLOR_PIXEL_GREEN(40,10,1): cfb = COLOR_PIXEL_BLUE(40,10,1) 2D_TARGET_IS 101: 2D_IMAGE_COPY 89,0,0,WIDTH(101),HEIGHT(101) 2D_PEN_COLOR ctr,ctg,ctb: 2D_FILL_COLOR cfr,cfg,cfb 2D_PEN_WIDTH POSITION(20) i% = xcl%*pas+2: j%=ycl%*pas+2: x2% = i%+pas-4: y2% = j%+pas-4 SELECT outil CASE 50: 2D_POINT xcl%,ycl%: x1% = -1: ' point CASE 51: IF x1% = -1: ' trait x1% = xcl%: y1% = ycl% 2D_TARGET_IS 100: 2D_PEN_COLOR 0,0,0: 2D_PEN_WIDTH 2 2D_LINE i%,j%,x2%,y2%: 2D_LINE i%,y2%,x2%,j% 2D_PEN_WIDTH 1 ELSE 2D_LINE x1%,y1%,xcl%,ycl%: x1% = -1 END_IF CASE 52: IF x1% = -1: ' rectangle vide x1% = xcl%: y1% = ycl% 2D_TARGET_IS 100: 2D_PEN_COLOR 0,0,0: 2D_PEN_WIDTH 2 2D_LINE i%,j%,x2%,y2%: 2D_LINE i%,y2%,x2%,j% 2D_PEN_WIDTH 1 ELSE 2D_LINE x1%,y1%,xcl%,y1%: 2D_POLY_TO xcl%,ycl% 2D_POLY_TO x1%,ycl%: 2D_POLY_TO x1%,y1%: x1% = -1 END_IF CASE 53: IF x1% = -1: ' rectangle plein x1% = xcl%: y1% = ycl% 2D_TARGET_IS 100: 2D_PEN_COLOR 0,0,0: 2D_PEN_WIDTH 2 2D_LINE i%,j%,x2%,y2%: 2D_LINE i%,y2%,x2%,j% 2D_PEN_WIDTH 1 ELSE 2D_RECTANGLE x1%,y1%,xcl%,ycl%: x1% = -1 END_IF CASE 54: IF x1% = -1: ' cercle vide x1% = xcl%: y1% = ycl% 2D_TARGET_IS 100: 2D_PEN_COLOR 0,0,0: 2D_PEN_WIDTH 2 2D_LINE i%,j%,x2%,y2%: 2D_LINE i%,y2%,x2%,j% 2D_PEN_WIDTH 1 ELSE r = SQR(POWER(xcl%-x1%,2)+POWER(y1%-ycl%,2)) x2% = x1%+r: y2% = y1% FOR n = .5 TO 6.5 STEP .5 xcl% = x1% + r*COS(n): ycl% = y1% - r*SIN(n) 2D_LINE x2%,y2%,xcl%,ycl%: x2%=xcl%: y2%=ycl% NEXT n x1% = -1 END_IF CASE 55: IF x1% = -1: ' cercle plein x1% = xcl%: y1% = ycl% 2D_TARGET_IS 100: 2D_PEN_COLOR 0,0,0: 2D_PEN_WIDTH 2 2D_LINE i%,j%,x2%,y2%: 2D_LINE i%,y2%,x2%,j% 2D_PEN_WIDTH 1 ELSE r = SQR(POWER(xcl%-x1%,2)+POWER(y1%-ycl%,2)) 2D_CIRCLE x1%,y1%,r: x1% = -1 END_IF CASE 56: 2D_FLOOD xcl%,ycl%,cfr,cfg,cfb: ' remplissage END_SELECT IF x1% = -1 THEN GOSUB Recop RETURN
Decal: FOR i% = 59 TO 62 IF CLICKED(i%) = 1 THEN EXIT_FOR NEXT i% 2D_TARGET_IS 101: 2D_IMAGE_COPY 89,0,0,WIDTH(101),HEIGHT(101) SELECT i% CASE 59: ' décalage à gauche FOR i% = 0 TO dic-2 FOR j% = 0 TO dic-1 cr = COLOR_PIXEL_RED(101,i%+1,j%) cg = COLOR_PIXEL_GREEN(101,i%+1,j%) cb = COLOR_PIXEL_BLUE(101,i%+1,j%) 2D_PEN_COLOR cr,cg,cb: 2D_POINT i%,j% NEXT j% NEXT i% 2D_PEN_COLOR 255,255,255: FOR j% = 0 TO dic-1: 2D_POINT dic-1,j%: NEXT j% CASE 60: ' décalage vers le haut FOR j% = 0 TO dic-2 FOR i% = 0 TO dic-1 cr = COLOR_PIXEL_RED(101,i%,j%+1) cg = COLOR_PIXEL_GREEN(101,i%,j%+1) cb = COLOR_PIXEL_BLUE(101,i%,j%+1) 2D_PEN_COLOR cr,cg,cb: 2D_POINT i%,j% NEXT i% NEXT j% 2D_PEN_COLOR 255,255,255: FOR i% = 0 TO dic-1: 2D_POINT i%,dic-1: NEXT i% CASE 61: ' décalage vers le bas FOR j% = dic-1 TO 1 STEP -1 FOR i% = 0 TO dic-1 cr = COLOR_PIXEL_RED(101,i%,j%-1) cg = COLOR_PIXEL_GREEN(101,i%,j%-1) cb = COLOR_PIXEL_BLUE(101,i%,j%-1) 2D_PEN_COLOR cr,cg,cb: 2D_POINT i%,j% NEXT i% NEXT j% 2D_PEN_COLOR 255,255,255: FOR i% = 0 TO dic-1: 2D_POINT i%,0: NEXT i% CASE 62: ' décalage à droite FOR i% = dic-1 TO 1 STEP -1 FOR j% = 0 TO dic-1 cr = COLOR_PIXEL_RED(101,i%-1,j%) cg = COLOR_PIXEL_GREEN(101,i%-1,j%) cb = COLOR_PIXEL_BLUE(101,i%-1,j%) 2D_PEN_COLOR cr,cg,cb: 2D_POINT i%,j% NEXT j% NEXT i% 2D_PEN_COLOR 255,255,255: FOR j% = 0 TO dic-1: 2D_POINT 0,j%: NEXT j% END_SELECT GOSUB Recop RETURN
Recop: ' recopie de l'icône réelle dans la zone dessin 2D_TARGET_IS 100 FOR j% = 0 TO dic-1 FOR i% = 0 TO dic-1 cr = COLOR_PIXEL_RED(101,i%,j%) cg = COLOR_PIXEL_GREEN(101,i%,j%) cb = COLOR_PIXEL_BLUE(101,i%,j%) 2D_PEN_COLOR cr,cg,cb: 2D_FILL_COLOR cr,cg,cb 2D_RECTANGLE i%*pas+1,j%*pas+1,i%*pas+pas,j%*pas+pas NEXT i% NEXT j% RETURN
Undo: 2D_TARGET_IS 101: 2D_IMAGE_PASTE 89,0,0: GOSUB Recop RETURN
Dat2Clip: a$ = TEXT$(71) IF a$ = "" MESSAGE "Pas de nom d'icône !": RETURN END_IF wpi% = WIDTH(101): hpi% = HEIGHT(101) a$ = "DATA "+CHR$(34)+a$+CHR$(34) a$=a$ + ","+CHR$(34)+STR$(wpi%)+"x"+STR$(hpi%)+CHR$(34)+CHR$(13)+CHR$(10) a$=a$ + "DATA " + CHR$(34) n = 3: ' nb de lignes de pixels par ligne de datas IF wpi% > 24 THEN n = 2 IF wpi% > 32 THEN n = 1 FOR j% = 0 TO hpi%-1 STEP n FOR q% = j% TO j%+n-1 FOR i% = 0 TO wpi%-1 clo%=65536*COLOR_PIXEL_RED(101,i%,q%)+256*COLOR_PIXEL_GREEN(101,i%,q%) clo%=clo%+COLOR_PIXEL_BLUE(101,i%,q%) FOR k% = 0 TO 7 IF clo% = cll%(k%) THEN EXIT_FOR NEXT k% a$ = a$ + STR$(k%) NEXT i% a$ = a$ + CHR$(34)+","+CHR$(34) NEXT q% a$ = LEFT$(a$, LEN(a$)-2) + CHR$(13) + CHR$(10) + "DATA " + CHR$(34) NEXT j% a$ = LEFT$(a$, LEN(a$)-8) CLIPBOARD_STRING_COPY a$ RETURN
Chct: FOR i% = 30 TO 42 IF CLICKED(i%) = 1 THEN EXIT_FOR NEXT i% IF i% = 39 OR i% = 41 THEN dct = 1: RETURN IF i% = 40 OR i% = 42 THEN dcf = 1: RETURN IF dct = 0 AND dcf = 0 THEN RETURN cr = COLOR_PIXEL_RED(i%,10,1) cg = COLOR_PIXEL_GREEN(i%,10,1) cb = COLOR_PIXEL_BLUE(i%,10,1) k% = i%-30: ' couleur cliquée IF dct = 1 i% = 39: COLOR i%, cr,cg,cb: ctr = cr: ctb = cb: ctg = cg ELSE i% = 40: COLOR i%, cr,cg,cb: cfr = cr: cfg = cg: cfb = cb END_IF IF k% = 8: ' couleur transparente 2D_TARGET_IS i%: 2D_LINE 0,0,WIDTH(i%),HEIGHT(i%) 2D_LINE 0,HEIGHT(i%),WIDTH(i%),0 END_IF dct = 0: dcf = 0 RETURN
Coutil: FOR i% = 50 TO 57 IF CLICKED(i%) = 1 THEN EXIT_FOR NEXT i% IF i% = 57 2D_TARGET_IS 101: CLS: GOSUB Recop: RETURN: ' RAZ END_IF 2D_TARGET_IS outil: 2D_PEN_COLOR 164,164,164: 2D_PEN_WIDTH 2 2D_LINE 1,1,29,1:2D_POLY_TO 29,29:2D_POLY_TO 1,29: 2D_POLY_TO 1,1 outil = i%: x1% = -1 2D_TARGET_IS outil: 2D_PEN_COLOR 255,0,0: 2D_PEN_WIDTH 2 2D_LINE 1,1,29,1:2D_POLY_TO 29,29:2D_POLY_TO 1,29: 2D_POLY_TO 1,1 RETURN
Import: OPEN_DIALOG 99: fi$ = FILE_NAME$(99): DELETE 99 IF LEN(fi$) < 3 THEN RETURN TEXT 66,fi$ EXECUTE_WAIT iv$ + fi$ + "/info=C:\Temp\whim.tmp" FILE_OPEN_READ 1, "C:\Temp\whim.tmp" WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$ IF LEFT$(a$, 16) = "Image dimensions" a$ = MID$(a$, 20, 16) i% = VAL(LEFT$(a$, INSTR(a$," ")-1)): a$ = MID$(a$, INSTR(a$,"x")+2,16) j% = VAL(LEFT$(a$, INSTR(a$," ")-1)): EXIT_WHILE END_IF END_WHILE FILE_CLOSE 1: FILE_DELETE "C:\Temp\whim.tmp" IF i% > j% a$ = " /resize=("+STR$(dic)+",0 /aspectratio" ELSE a$ = " /resize=(0,"+STR$(dic)+") /aspectratio" END_IF a$ = a$ + " /convert=C:\Temp\tmp.jpg" EXECUTE_WAIT iv$ + fi$ + a$ FILE_LOAD 101, "C:\Temp\tmp.jpg": ' STRETCH_ON 101 FILE_DELETE "C:\Temp\tmp.jpg" GOSUB Redcoul GOSUB Recop RETURN
Redcoul: 2D_TARGET_IS 101 FOR j% = 0 TO dic-1 FOR i% = 0 TO dic-1 cr = COLOR_PIXEL_RED (101,i%,j%): cg = COLOR_PIXEL_GREEN (101,i%,j%) cb = COLOR_PIXEL_BLUE (101,i%,j%) IF cr < 128 cr = 0 ELSE cr = 255 END_IF IF cg < 128 cg = 0 ELSE cg = 255 END_IF IF cb < 128 cb = 0 ELSE cb = 255 END_IF 2D_PEN_COLOR cr,cg,cb: 2D_POINT i%,j% NEXT i% NEXT j% RETURN
Clipico: a$ = CLIPBOARD_STRING_PASTE$ IF LEFT$(a$, 5) <> "DATA " MESSAGE "Le presse-papier ne contient pas de DATAs !": RETURN END_IF FILE_OPEN_WRITE 1, "C:\Temp\tmp": FILE_WRITELN 1, a$: FILE_CLOSE 1 DLIST 99: FILE_LOAD 99, "C:\Temp\tmp": FILE_DELETE "C:\Temp\tmp" DIM wic, hic, xic, yic, kic, dti$, rbi%, gbi%, bbi% dti$ = ITEM_READ$(99, 1): dti$ = MID$(dti$, 7, 100) kic = INSTR(dti$, ","): TEXT 71, LEFT$(dti$, kic-2): dti$ = MID$(dti$,kic+2,100) dti$ = LEFT$(dti$, LEN(dti$)-1) kic = INSTR(dti$, "x"): wic = VAL(LEFT$(dti$,kic-1)): hic = VAL(MID$(dti$,kic+1,10)) dic = wic: GOSUB Desgril DLIST 98 FOR yic = 2 TO COUNT(99) dti$ = MID$(ITEM_READ$(99, yic),7,200) kic = INSTR(dti$, ",") WHILE kic > 0 ITEM_ADD 98, LEFT$(dti$, kic-2) dti$ = MID$(dti$, kic+2, 100): kic = INSTR(dti$, ",") END_WHILE ITEM_ADD 98, LEFT$(dti$, LEN(dti$)-1) NEXT yic 2D_TARGET_IS 101 FOR yic = 0 TO hic-1 dti$ = ITEM_READ$(98, yic+1) FOR xic = 0 TO wic-1 kic = VAL(MID$(dti$, xic+1, 1)) IF kic < 8: ' couleur non transparente clo% = cll%(kic): rbi%=INT(clo%/65536) gbi%=INT(BIN_AND(clo%,65535)/256): bbi%=BIN_AND(clo%,255) ELSE rbi% = 192: gbi% = 192: bbi% = 192 END_IF 2D_PEN_COLOR rbi%,gbi%,bbi%: 2D_POINT xic,yic NEXT xic NEXT yic DELETE 98: DELETE 99 FREE wic: FREE hic: FREE xic: FREE yic: FREE kic: FREE dti$ FREE rbi%: FREE gbi%: FREE bbi% GOSUB Recop RETURN
Aide: b$ = CHR$(13)+CHR$(10) a$ = CHR$(9)+CHR$(9)+"- FABRICATION D'ICONES SIMPLES -"+b$+b$ a$=a$+"- Choisir le format de l'icône: 16x16, 24x24, 32x32, 48x48, 64x64"+b$ a$=a$+"- Choisir l'épaisseur du tracé ('Epaisseur trait')"+b$ a$=a$+"- Choisir les couleurs de tracé et de remplissage: cliquer sur le type,"+b$ a$=a$+"puis sur la couleur désirée."+b$ a$=a$+"NB: il existe une couleur 'transparente'."+b$ a$=a$+"- Choisir l'outil de dessin parmi ceux proposés: point, trait, rectangle"+b$ a$=a$+"vide ou plein, cercle vide ou plein, remplissage, effacement total du"+b$ a$=a$+"dessin (RAZ)."+b$ a$=a$+" Outils de décalage d'1 pixel de la totalité de l'image à droite, gauche,"+b$ a$=a$+"haut ou bas."+b$+b$ a$=a$+"Il est possible d'importer depuis le presse-papier une icône sauvegardée"+b$ a$=a$+"précédemment sous forme de lignes de DATAs par le programme, ou copiées"+b$ a$=a$+"dans le presse-papier par un éditeur de textes (bouton CLIPBOARD -> ICONE)."+b$ a$=a$+"Ceci pour permettre de retoucher une icône déjà existante dans un programme"+b$ a$=a$+"ou dans une collection d'icônes personnelle."+b$+b$ a$=a$+"Il est également possible d'importer une icône existante quelconque,"+b$ a$=a$+"(cliquer dans la zone 'importer' pour choisir), mais il faut savoir qu'elle"+b$ a$=a$+"sera ramenée aux dimensions choisies pour l'icône, et surtout que ses"+b$ a$=a$+"couleurs seront réduites à la palette de 8 couleurs proposées ici, ce qui"+b$ a$=a$+"peut provoquer des résultats un peu... surprenants."+b$+b$ a$=a$+"La touche 'Undo' permet d'annuler la dernière opération effectuée."+b$+b$ a$=a$+"Le résultat est sauvegardé dans le presse-papier (bouton DATA->CLIPBOARD)"+b$ a$=a$+"sous la forme de lignes de DATAs, précédées du nom de l'icône, à fournir"+b$ a$=a$+"obligatoirement, et de ses dimensions, également sous la forme d'une ligne"+b$ a$=a$+"de DATA."+b$ a$=a$+"Ces éléments sont à 'coller' dans un programme Panoramic pour exploitation"+b$ a$=a$+"par un sous-programme d'affichage d'icônes obéissant aux mêmes normes,"+b$ a$=a$+"notamment de palette réduite de couleurs."+b$ MESSAGE a$ RETURN
2) L'affichage des boutons avec icône et texteDéjà publié plus haut, on voit l'affichage d'un bouton avec une icône constituée avec le module ci-dessus qui se retrouve ici sous forme de lignes de datas (chaque chiffre correspond à la couleur du pixel correspondant, la série est précédée du nom et du format de l'icône). On remarquera la couleur transparente ( = 8 ) autour du dessin. Le centrage du texte tient compte de la présence éventuelle d'une icône à gauche du bouton. - Code:
-
' Boutons à la demande: texte multiple, icône éventuelle LABEL Bouton, Desico, Pourvoir DIM n, xb, yb, lb, hb, tb$, ib$, xi, yi, i%, j%, k%, a$
n = 10: lb = 120: hb = 40: xb = 70: yb = 10 tb$ = "Opération#interdite": ' texte du bouton ib$ = "IcForbid": ' icône du bouton GOSUB Bouton: ON_CLICK n, Pourvoir ' bouton classique Panoramic, pour comparaison: button 20: top 20, 10: left 20, xb+lb+10: width 20, 90: caption 20, "Bouton classique" END
DATA "IcForbid","24x24" DATA "888888888888888888888888","888888888111111888888888","888888811111111118888888" DATA "888881111111111111188888","888811111111111111118888","888111111111111111111888" DATA "888111111111111111111888","881111111111111111111188","881111111111111111111188" DATA "811111111111111111111188","811777777777777777777118","811777777777777777777118" DATA "811777777777777777777118","811777777777777777777118","811111111111111111111188" DATA "881111111111111111111188","881111111111111111111188","888111111111111111111888" DATA "888111111111111111111888","888811111111111111118888","888881111111111111188888" DATA "888888811111111118888888","888888888811118888888888","888888888888888888888888"
Bouton: ' paramètres en entrée: n, xb, yb, lb, hb, tb$ (caption), ib$ (icône éventuelle) DIM rbt, gbt, bbt, nbt, ibt, jbt, kbt, tbt$(10) rbt=192: gbt=192: bbt=192: ' couleur du bouton: gris rbt=164: gbt=255: bbt=255: ' idem, cyan PICTURE n: TOP n, yb: LEFT n, xb: WIDTH n, lb: HEIGHT n, hb 2D_TARGET_IS n: PRINT_TARGET_IS n 2D_FILL_COLOR rbt,gbt,bbt: 2D_PEN_COLOR rbt/2,gbt/2,bbt/2 2D_PEN_WIDTH 2: 2D_RECTANGLE 0,0,WIDTH(n),HEIGHT(n) xi = 0 IF ib$ <> "": ' il y a une icône xi = 4: yi = (hb-24)/2: GOSUB Desico: ' icône 24x24 END_IF 2D_FILL_COLOR rbt,gbt,bbt: 2D_PEN_WIDTH 1 2D_PEN_COLOR 255,255,255: 2D_LINE 1,hb-2,1,1: 2D_POLY_TO lb-2,1 nbt = 0 kbt = INSTR(tb$, "#"): ' séparateur de lignes éventuel WHILE kbt > 0 nbt = nbt+1: tbt$(nbt) = LEFT$(tb$,kbt-1): tb$ = MID$(tb$, kbt+1, 100) kbt = INSTR(tb$, "#") END_WHILE nbt = nbt+1: tbt$(nbt) = tb$ ibt = TEXT_WIDTH(tb$,n): jbt = TEXT_HEIGHT(tb$,n) FOR kbt = 1 TO nbt ibt = TEXT_WIDTH(tbt$(kbt),n) PRINT_LOCATE xi+(lb-xi-ibt)/2,(kbt-1)*jbt+(hb-jbt*nbt)/2: PRINT tbt$(kbt) NEXT kbt 2D_TARGET_IS 0: PRINT_TARGET_IS 0 FREE rbt: FREE gbt: FREE bbt: FREE ibt: FREE jbt: FREE kbt: FREE tbt$ RETURN
Desico: ' Affichage de l'icône ib$ en xi, yi du 2d_Target DIM clo%, cll%(10), rbi%, gbi%, bbi%, wic, hic, xic, yic, kic ' couleurs: Noir, Rouge, Vert, Bleu, Jaune, Magenta, Cyan, Blanc, Transparent (8)- cll%(0)=0: cll%(1)=255*65536:cll%(2)=255*256:cll%(3)=255:cll%(4)=65536*255+256*255 cll%(5)=65536*255+255:cll%(6)=256*255+255:cll%(7)=65536*255+256*255+255 READ a$ WHILE a$ <> ib$: READ a$: END_WHILE READ a$: wic = VAL(LEFT$(a$, 2)): hic = VAL(RIGHT$(a$, 2)) FOR yic = 0 TO hic-1 READ a$ FOR xic = 0 TO wic-1 kic = VAL(MID$(a$, xic+1, 1)) IF kic < 8: ' couleur non transparente clo% = cll%(kic): rbi%=INT(clo%/65536) gbi%=INT(BIN_AND(clo%,65535)/256): bbi%=BIN_AND(clo%,255) 2D_PEN_COLOR rbi%,gbi%,bbi%: 2D_POINT xi+xic,yi+yic END_IF NEXT xic NEXT yic xi = xi + wic: ' index de la zone disponible pour le texte FREE clo%: FREE cll%: FREE rbi%: FREE gbi%: FREE bbi% FREE wic: FREE hic: FREE xic: FREE yic: FREE kic RETURN
Pourvoir: ' Gadget, juste pour voir l'effet du clic sur le bouton (enfoncement) DIM ldn, hdn 2D_TARGET_IS n: 2D_PEN_COLOR 0,0,0: ldn = WIDTH(n): hdn = HEIGHT(n) 2D_LINE 1,hdn-2,1,1: 2D_POLY_TO ldn-2,1 2D_PEN_COLOR 255,255,255: 2D_LINE 2,hdn-2,ldn-2,hdn-2:2D_POLY_TO ldn-2,2 WAIT 500: 2D_LINE 1,hdn-2,1,1: 2D_POLY_TO ldn-2,1 2D_PEN_COLOR 0,0,0: 2D_LINE 2,hdn-2,ldn-2,hdn-2:2D_POLY_TO ldn-2,2 2D_TARGET_IS 0 print "Cliqué !" FREE ldn: FREE hdn RETURN Edit 14/03 module Bouton (2): L'affichage de l'icône est faite par un s/p indépendant (appelé par le s/p Bouton), pour pouvoir afficher l'icône sur n'importe quel 2d_Target. Edit 15/03 dessin d'icônes (1): possibilité d'importation d'icônes existantes Edit 16/03 dessin d'icônes (1): rappel d'une icône précédente depuis le presse-papier, et ajout de la fonction 'undo'. Edit 17/03 dessin d'icônes (1) ajout des formats 48x48 et 64x64. Ajout de fonctions de décalage d'un pixel dans les 4 directions gauche, droite, haut, bas.
Dernière édition par JL35 le Sam 17 Mar 2012 - 16:51, édité 9 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Boutons à la demande Mar 13 Mar 2012 - 18:57 | |
| Là je dit; RESPECT ! The KIT for BUTTON ! Une petite manip à faire pour transférer les data (supprimer le 24") et reprendre la ligne du prog. Bravo | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Boutons à la demande Mar 13 Mar 2012 - 20:44 | |
| J'adore (en plus, ton programme et facilement utilisable pour faire un éditeur de niveau, mais bon, ça c'est une autre histoire ....) Merci JL35 | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Boutons à la demande Mer 14 Mar 2012 - 1:33 | |
| J'ai édité pour des bricoles. @Jicehel, l'utilisation est évidemment laissée à l'imagination de chacun. @Jean Claude... pas bien compris ta remarque (supprimer le 24" ?) Il suffit de coller le clipboard dans l'éditeur Panoramic, à l'emplacement voulu dans le programme cible (en fait n'importe où). là-dessus bonne nuit à tous, et je ne suis pas là avant demain soir... enfin, vu l'heure, ce soir ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Boutons à la demande Mer 14 Mar 2012 - 21:41 | |
| Edit du 14/03: Pour faire plus modulaire, j'ai extrait du s/p d'affichage du pseudo-bouton illustré ('Bouton') l'affichage de l'icône elle-même, pour en faire un s/p indépendant qui permet d'afficher une icône créée par la méthode précédente d'être affichée non plus seulement sur un bouton mais sur n'importe quelle cible 2d_Target, pour agrémenter une présentation par exemple. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Boutons à la demande Mer 14 Mar 2012 - 21:54 | |
| On approche de plus en plus de la librairie de sous programme. Excellent JL35 | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Boutons à la demande Mer 14 Mar 2012 - 22:32 | |
| C'est un peu le but recherché, à travers tout ça.
Bonne nuit à tous ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Boutons à la demande Jeu 15 Mar 2012 - 18:22 | |
| Edit du 15/03: dans le programme de dessin d'icônes, possibilité d'importation d'icônes existantes, avec forte dégradation éventuelle de l'aspect du fait des dimensions généralement réduites, et surtout de la réduction de la palette de couleurs à 8, mais enfin ça donne la forme générale, sur laquelle on peut redessiner.
Edit du 16/03: idem, possibilité de rappel d'une icône depuis le clipboard (retouche d'une icône existante). Et ajout du bouton 'Undo', pour annuler la dernière opération de traçage.
Edit du 17/03: idem, ajout des formats 48x48 et 64x64, + ajout de boutons de décalage de l'image entière dans les directions gauche, droite, haut et bas, pour recadrage éventuel. | |
| | | Contenu sponsorisé
| Sujet: Re: Boutons à la demande | |
| |
| | | | Boutons à la demande | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |