FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» EPP_V01 éditeur pour Panoramic
par Minibug Hier à 21:03

» [RESOLU] Quelle ligne est sélectionnée dans SYNEDIT ?
par Jean Claude Hier à 21:02

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Hier à 15:58

» Planétarium virtuel.
par Pedro Alvarez Hier à 9:28

» Demande pour Jack concernant PanExpress
par Marc Mar 18 Sep 2018 - 23:56

» Calculatrice
par joeeee2017 Mar 18 Sep 2018 - 9:35

» Petit coucou en passant !
par Minibug Dim 16 Sep 2018 - 15:03

» bug SEVERE fnc+sub : variables globales corrompus
par silverman Dim 16 Sep 2018 - 13:38

» Verrouiller un form en avant plan
par silverman Dim 16 Sep 2018 - 12:50

» Fin de l'aventure.
par Pedro Alvarez Sam 15 Sep 2018 - 18:16

» Demande d'explications Sur File_Write & File_writeln
par Jack Sam 15 Sep 2018 - 17:26

» MEMO avec des possibilités de commande
par Oscaribout Mer 12 Sep 2018 - 1:06

» La théorie du chaos
par jean_debord Mar 11 Sep 2018 - 9:30

» Orbites de l’ensemble de Mandelbrot
par Jean Claude Lun 10 Sep 2018 - 21:08

» Version instantanée V 0.9.29i2 du 4/09/2018
par silverman Mer 5 Sep 2018 - 10:15

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
CalendrierCalendrier

Partagez | 
 

 Icônes à fond transparent dans Panoramic

Aller en bas 
AuteurMessage
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Icônes à fond transparent dans Panoramic   Dim 30 Mai 2010 - 17:10

Cela fait un moment que j'essaye d'avoir des icônes à fond transparent pour faire des boutons image sur une barre d'outils. J'avais suggéré la commande TRANSPARENT N pour un picture, mais pour le moment, il n'y a pas de réaction. D'après mes recherches, c'est un attribut direct du canvas d'un image sous Delphi...

Alors, j'ai trouvé une façon de contourner le problème. Bon, ce n'est pas très performant, mais ça marche, et comme les boutons sont chargés en début de programme, c'est acceptable.

Le principe est le suivant:

1. on constitue des images en format BMP des boutons à utiliser, maxi 32x32 pixels, mais aussi 24x24 ou 16x16. Bien sûr, plus le format est grand, plus c'est lent...

2. avec un éditeur d'images (Paint, Irfanview, Fotofiltre, ...), on utilise la fonction "remplissage" pour remplir les espaces extérieurs avec une couleur n'existant pas dans l'image (noir, blanc, ou n'importe quoi d'autre). L'important, c'est que cette couleur touche le coin en bas à gauche de l'image.

3. on crée un picture uni_colore pour représenter la barre d'outils, et on place autant de petits picture que nécessaire sur cette barre d'outils.

4. puis, pour chaque picture, on lui charge son image BMP et on utilise le sous-programme donné ci-après. Ce sous-programme va redessiner chaque pixel ayant la couleur dite transparente avec la couleur de la barre d'outils. Le résultat est très joli. Voici le code:
Code:
label click_40, charger_icone

' On considère que, comme en Delphi et avec les API Windows,
' que le pixel du coin en bas à gauche peut représenter la couleur transparente.

' variable de travail
dim i%

' variables du sous-programme
dim r%, g%, b%, k%, rt%, gt%, bt%
dim n_objet%, n_outil%, i_icone%, j_icone%, icon_size%
dim img_file$

' barre d'outils
picture 10
top 10,10
left 10,10
width 10,400
height 10,40
color 10,255,255,0

' créer les images pour les boutons de la carre s'outils
for i%=1 to 5
picture 20+i%
top 20+i%,15
left 20+i%,15+i%*40
width 20+i%,30
height 20+i%,30
stretch_on 20+i%
2D_target_is 20+i%
next i%

' bouton pour lancer le chargement des images
button 40
top 40,60
left 40,130
caption 40,"charger"
on_click 40,click_40

end

' lancement du chargement de simages
click_40:
    for k%=1 to 5
        n_objet% = 20+k%      : ' image cible
        n_outil% = 10              : ' image barred'outils
        icon_size% = 32          : ' taille de l'image d'ORIGINE !
        img_file$ = "c:\program files\panoramic editor\open.bmp"  :  ' fichier image
        gosub charger_icone
    next k%
    return

' sous-programme de service pour le chargement d'une image
' en entrée:
'    img_file$  = nom du fichier image
'    n_outil%  = numéro d'objet de la barre d'outils
'    n_objet%  = numéro d'objet du bouton (objet picture Panoramic)
'    icon_size% = taille de l'image en pixels
charger_icone:
    file_load n_objet%,img_file$
    r% = color_pixel_red(n_outil%,width(n_outil%-2),2)        : ' prendre la couleur de la barre de commande
    g% = color_pixel_green(n_outil%,width(n_outil%-2),2)
    b% = color_pixel_blue(n_outil%,width(n_outil%-2),2)
    rt% = color_pixel_red(n_objet%,0,icon_size%)        : ' prendre la couleur transparente
    gt% = color_pixel_green(n_objet%,0,icon_size%)
    bt% = color_pixel_blue(n_objet%,0,icon_size%)
    2D_target_is n_objet%
    2D_pen_color r%,g%,b%                : ' pouvoir dessiner avec cette couleur
    for i_icone%=0 to icon_size%-1
        for j_icone%=0 to icon_size%-1
            r% = color_pixel_red(n_objet%,i_icone%,j_icone%)
            g% = color_pixel_green(n_objet%,i_icone%,j_icone%)
            b% = color_pixel_blue(n_objet%,i_icone%,j_icone%)
            if (r%=rt%) and (g%=gt%) and (b%=bt%)            : ' si le fond est transparent
                2D_point i_icone%,j_icone%                    : ' alors redessiner le point
            end_if
        next j_icone%
    next i_icone%
    return

J'ai remarqué que la commande stretch_on produit des effets inattendus. Si le picture pour dessiner le bouton fait 20x20 pixels, ce qui est une bonne taille pour un bouton de barre d'outils, et si l'image d'origine fait 32x32 pixels, il faut utiliser stretch_on avant de charger l'image. Or, à l'intérieur de l'image, ON CONTINUE A TRAVAILLER AVEC LA TAILLE D'ORIGINE, c'est-à-dire 32x32 ! Il faut donc connaître la taille d'origine de l'image dans mon sous-programme pour "chopper" le coin en bas à gauche et pour boucler sur la totalité de l'image ! C'est la raison de l'ajout de la variable icon_size%.


Dernière édition par Klaus le Lun 31 Mai 2010 - 8:37, édité 5 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Icônes à fond transparent dans Panoramic   Dim 30 Mai 2010 - 17:33

Idée intéressante...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Icônes à fond transparent dans Panoramic   Lun 31 Mai 2010 - 7:54

J'ai enfin compris.

Bon travail
Par contre tu mets 5 pictures avec un seul nom de fichier, et ça porte à confusion, vu qu'on aura qu'une seule image copiée 5 fois.
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Icônes à fond transparent dans Panoramic   Lun 31 Mai 2010 - 8:34

Certes, mais pour la démo, c'est suffisant. Il suffit de mettre chez soi, les noms de fichiers que l'on veut, et de rajouter les on_click sir les picture...

J'ai fait un edit sur le source, car dû certainement à un bug dans Panoramic, après les fonctions color_pixel_xxx retournent "blanc" (255,255,255) quand on le picture à charger se trouve à gauche de la barre d'outils - ca savoir pourquoi...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: Icônes à fond transparent dans Panoramic   

Revenir en haut Aller en bas
 
Icônes à fond transparent dans Panoramic
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Icônes à fond transparent dans Panoramic
» Faire un fond transparent [résolu]
» Mettre un tableau transparent dans le QEEL
» Problème fond transparent
» Fond coloré dans un tableau

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: