JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Insertion d'icônes rudimentaires (symboles) dans un objet Ven 23 Juil 2010 - 15:38 | |
| Pour obtenir par exemple: Les icônes sont dessinées en N/B avec l'éditeur d'icônes, sauvegardées en datas dans le clipboard, puis les datas sont 'collés' dans le programme source. On insère un nom en data avant chaque vignette, et on peut dessiner cette vignette n'importe où en donnant au sous-programme le nom de la vignette, le numéro de l'objet récepteur, et les coordonnées x et y dans l'objet. Le dessin se superpose à ce qui est éventuellement déjà présent dans l'objet, seules les parties en noir sont dessinées (le dernier exemple est la superposition de l'icône triangle et de l'icône cercle). L'exemple ci-dessus (l'élément essentiel est évidemment le s/p Desico): - Code:
-
DATA "Flh" DATA "2020": ' largeur, hauteur DATA "0000000000000000000000000001000000038000000380000007C0000007C000" DATA "000FE000000FE000001FF000001FF000003FF800003FFC00007FFC00007FFE00" DATA "00FFFE0000FFFF0001FFFF0001FFFF8003FFFFC003FFFFC007FFFFE007FFFFE0" DATA "0FFFFFF00FFFFFF0000000000000000000000000000000000000000000000000" DATA "Flb" DATA "2020": ' largeur, hauteur DATA "0000000000000000000000001FFFFFF00FFFFFE007FFFFE007FFFFC003FFFFC0" DATA "03FFFF8001FFFF8001FFFF0000FFFF0000FFFE00007FFE00003FFC00003FF800" DATA "001FF000001FF000000FE000000FE0000007C0000007C0000003800000038000" DATA "0001000000010000000000000000000000000000000000000000000000000000" DATA "Flg" DATA "2020": ' largeur, hauteur DATA "00000000000000000000000000000030000000F0000003F000000FF000003FF0" DATA "0000FFF00003FFF0000FFFF0003FFFF000FFFFF003FFFFF00FFFFFF01FFFFFF0" DATA "07FFFFF001FFFFF0003FFFF0000FFFF00003FFF00000FFF000001FF0000003F0" DATA "000000F000000030000000000000000000000000000000000000000000000000" DATA "Fld" DATA "2020": ' largeur, hauteur DATA "000000000000000000000000180000001E0000001F8000001FE000001FF80000" DATA "1FFE00001FFF80001FFFE0001FFFFC001FFFFF001FFFFFC01FFFFFF01FFFFFC0" DATA "1FFFFF001FFFFC001FFFF0001FFFC0001FFE00001FF800001FE000001F800000" DATA "1E00000018000000000000000000000000000000000000000000000000000000" DATA "Retour" DATA "2020": ' largeur, hauteur DATA "00000000000000000000000000000000000001C0000001C0000001C0000001C0" DATA "000001C0000001C0000001C0000001C0000001C0000001C0000001C0000801C0" DATA "001801C0003801C0007801C000F801C001F801C003FFFFC007FFFFC003FFFFC0" DATA "01F8000000F80000007800000038000000180000000800000000000000000000" DATA "Flhd" DATA "2020": ' largeur, hauteur DATA "00000000000000000000000000000000000000000001FFC00000FFC000007FC0" DATA "00003FC000001FC000001FC000003FC000007FC00000F3C00001E1C00003C0C0" DATA "00078040000F0000001E0000003C00000078000000F0000001E0000003C00000" DATA "0780000003000000000000000000000000000000000000000000000000000000" DATA "Dilat" DATA "2020": ' largeur, hauteur DATA "00000000000000003FC003FC3FC003FC3C00003C3E00007C370000EC338001CC" DATA "31C0038C30C0030C000000000000000000000000000000000000000000000000" DATA "00000000000000000000000000000000000000000000000030C0030C31C0038C" DATA "338001CC370000EC3E00007C3C00003C3FC003FC3FC003FC0000000000000000" DATA "Reduc" DATA "2020": ' largeur, hauteur DATA "000000000000000030C0030C38C0031C1CC003380EC0037007C003E003C003C0" DATA "3FC003FC3FC003FC000000000000000000000000000000000000000000000000" DATA "0000000000000000000000000000000000000000000000003FC003FC3FC003FC" DATA "03C003C007C003E00EC003701CC0033838C0031C30C0030C0000000000000000" DATA "Triangle" DATA "2020": ' l,h DATA "0000000000018000000180000002400000024000000420000004200000081000" DATA "0008100000100800001008000020040000200400004002000040020000800100" DATA "0080010001000080010000800200004002000040040000200400002008000010" DATA "0800001010000008100000082000000420000004400000027FFFFFFE00000000" DATA "Cercle" DATA "2020": ' l,h DATA "00000000000FE00000701C000180030003000180040000400800002018000030" DATA "1000001020000008200000082000000840000004400000044000000440000004" DATA "4000000440000004400000042000000820000008200000081000001018000030" DATA "0800002004000040030001800180030000701C00000FE0000000000000000000"
DIM wp, hp, a$, et$, x%, y%, obj%, wim, him, vh$, v%, i%, j%, k%, l$, LABEL Desico, Cvx, Rdat
wp = 40: hp = 40
Picture 1: left 1, 10: top 1, 10: width 1, wp: height 1, hp COLOR 1, 220, 220, 220 et$ = "Flhd": x% = 0: y% = 5: obj% = 1: GOSUB Desico
Picture 2: left 2, 60: top 2, 10: width 2, wp: height 2, hp COLOR 2, 220, 220, 220 et$ = "Flh": x% = 0: y% = 5: obj% = 2: GOSUB Desico
Picture 3: left 3, 110: top 3, 10: width 3, wp: height 3, hp COLOR 3, 220, 220, 220 et$ = "Flg": x% = 0: y% = 5: obj% = 3: GOSUB Desico
Picture 4: left 4, 160: top 4, 10: width 4, wp: height 4, hp COLOR 4, 220, 220, 220 et$ = "Fld": x% = 0: y% = 5: obj% = 4: GOSUB Desico
Picture 5: left 5, 10: top 5, 60: width 5, wp: height 5, hp COLOR 5, 220, 220, 220 et$ = "Flb": x% = 0: y% = 5: obj% = 5: GOSUB Desico
Picture 6: left 6, 60: top 6, 60: width 6, wp: height 6, hp COLOR 6, 220, 220, 220 et$ = "Retour": x% = 0: y% = 5: obj% = 6: GOSUB Desico
Picture 7: left 7, 110: top 7, 60: width 7, wp: height 7, hp COLOR 7, 220, 220, 220 et$ = "Dilat": x% = 0: y% = 5: obj% = 7: GOSUB Desico
Picture 8: left 8, 160: top 8, 60: width 8, wp: height 8, hp COLOR 8, 220, 220, 220 et$ = "Reduc": x% = 0: y% = 5: obj% = 8: GOSUB Desico
Picture 9: left 9, 10: top 9, 110: width 9, wp: height 9, hp COLOR 9, 220, 220, 220 et$ = "Triangle": x% = 0: y% = 5: obj% = 9: GOSUB Desico
Picture 10: left 10, 60: top 10, 110: width 10, wp: height 10, hp COLOR 10, 220, 220, 220 et$ = "Cercle": x% = 0: y% = 5: obj% = 10: GOSUB Desico
Picture 11: left 11, 110: top 11, 110: width 11, wp: height 11, hp COLOR 11, 220, 220, 220 et$ = "Triangle": x% = 0: y% = 5: obj% = 11: GOSUB Desico et$ = "Cercle": x% = 0: y% = 5: obj% = 11: GOSUB Desico
END ' ===============================================================
Desico: ' Positionnement de lecture des datas après le label et$ RESTORE: REPEAT: READ a$: UNTIL a$ = et$ ' dessin des datas en x%, y% dans l'objet système obj% READ l$: vh$ = LEFT$(l$, 2): GOSUB Cvx: wim = v% vh$ = RIGHT$(l$, 2): GOSUB Cvx: him = v% a$ = "" WHILE LEN(a$) < wim*him/4: READ l$: a$ = a$ + l$: END_WHILE 2D_TARGET_IS obj%: 2D_PEN_COLOR 0,0,0 FOR j% = 0 TO him - 1 l$ = MID$(a$, 1+j%*wim/4, wim/4) FOR i% = 1 TO LEN(l$) v% = INSTR("0123456789ABCDEF", MID$(l$, i%, 1))-1 FOR k% = 0 TO 4 IF BIN_AND(v%, POWER(2, 3-k%)) > 0 2D_POINT x%+i%*4+k%, y%+j% END_IF NEXT k% NEXT i% NEXT j% GOTO Rdat Cvx: ' conversion hexadécimal/décimal de vh$, résultat dans v% v% = 0 FOR k% = 1 TO LEN(vh$) v% = v%*16 + INSTR("0123456789ABCDEF", MID$(vh$, k%, 1))-1 NEXT k% RETURN Rdat: RETURN | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Insertion d'icônes rudimentaires (symboles) dans un objet Ven 23 Juil 2010 - 22:44 | |
| Intéressant, cette application de l'éditeur d'icônes. Je l'ai chargé et je vais voir ce que je peux en faire. Je vois par exemple qu'on peut aisément adapter la couleur de fond et la couleur de dessin pour les icônes - c'est intéressant - surtout dans l'idée de superposer plusieurs dessins dans une même icône. Tu peux donc aisément construire des icônes en couleur, de cette manière - il suffit d'avoir un jeu de data pour chaque couleur; on peut même imaginer, dans les data, une structure du type - Citation :
- nom de l'icône
nombre de couleurs (ou "couches") de l''image couleur RGB numéro 1 les data de la première couleur ... couleur RGB numéro n les data de la n-ième couleur marque de fin pour l'icône nom de l'icône suivante ... etc Belle réalisation, et porteuse ne nombreuses possibilités d'évolution ! | |
|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Insertion d'icônes rudimentaires (symboles) dans un objet Ven 23 Juil 2010 - 23:01 | |
| Certainement il y a des possibilités d'évolution. Comme je le disais, je me suis contenté du noir et blanc pour ne pas avoir des datas trop volumineux, là on est à 1 bit par pixel, avec les couleurs on passe à 24 bits par pixel ! et même avec ma limitation à 16 couleurs ça fait quand même 4 fois plus. Toi, ton idée reviendrait à définir une espèce de palette pour l'icône, là ça devient un peu compliqué. Enfin, on verra, ça évolue...
Tu as vu, j'ai ajouté la possibilité de pivoter l'image de 90°... | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Insertion d'icônes rudimentaires (symboles) dans un objet Ven 23 Juil 2010 - 23:11 | |
| Oui, j'ai vu, et j'ai apprécié le code utilisé pour réaliser la rotation. Copie dans un tableau, et réécriture en jouant avec les indices - une façon simple et économique avec les moyens que Panoramic offre car on ne peut travailler qu'au niveau d'un pixel et non au niveau d'une ligne ou colonne (méthode scanline). Ca me plait bien. | |
|