Page 1 sur 1

toolbar en png

Publié : dim. 27/août/2006 17:14
par venom
bonjour,

voila je souhaiterais avoir un effect toolbar mais en format png comme ce-ci
http://purebasic.myftp.org/files/226/bleu.bmp

donc je voudrais pouvoir choisir une icone pour chaque enplacement et enregistrer le tout en png comme au dessus.

donc, j'ai fait un code mais c'est pour l'enregistrement que je ne sais pas par ou commencer.

voici la source

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
Enumeration
  #Button_0
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Button_5
  #Button_6
  #Button_7
  #Button_8
  #Button_9
  #Button_10
  #Button_11
  #Button_save
  #Button_annuler
EndEnumeration

  If OpenWindow(#Window_0, 105, 235, 835, 240, "Toolbar",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
   SetWindowColor(#Window_0, RGB(0,0,255)) 
    If CreateGadgetList(WindowID(#Window_0))
      LoadImage(1, "C:\WINDOWS\Rosace bleue 16.bmp")
      ImageGadget(#Button_0, 0, 105, 75, 50, ImageID(1))
      ImageGadget(#Button_1, 75, 105, 70, 50, ImageID(1))
      ImageGadget(#Button_2, 145, 105, 70, 50, ImageID(1))
      ImageGadget(#Button_3, 215, 105, 65, 50, ImageID(1))
      ImageGadget(#Button_4, 280, 105, 70, 50, ImageID(1))
      ImageGadget(#Button_5, 350, 105, 65, 50, ImageID(1))
      ImageGadget(#Button_6, 415, 105, 75, 50, ImageID(1))
      ImageGadget(#Button_7, 490, 105, 60, 50, ImageID(1))
      ImageGadget(#Button_8, 550, 105, 75, 50, ImageID(1))
      ImageGadget(#Button_9, 625, 105, 80, 50, ImageID(1))
      ImageGadget(#Button_10, 705, 105, 60, 50, ImageID(1))
      ImageGadget(#Button_11, 765, 105, 70, 50, ImageID(1))
      ButtonGadget(#Button_save, 625, 205, 100, 30, "enregistrer sous")
      ButtonGadget(#Button_annuler, 730, 205, 100, 30, "annuler")
      
    EndIf
  EndIf
  
  Repeat
   EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget 
      Select EventGadget()
    
       Case #Button_0
        Filename$ = OpenFileRequester("ouvrir une icone", "", "ico|*.ico", 0)
         If LoadImage(2, Filename$)
             ImageGadget(#Button_0, 0, 105, 75, 50, ImageID(2))
         EndIf
       
       Case #Button_1
        Filename1$ = OpenFileRequester("ouvrir une icone", "", "ico|*.ico", 0)
         If LoadImage(3, Filename1$)
             ImageGadget(#Button_1, 75, 105, 70, 50, ImageID(3))
         EndIf
       
       Case #Button_2
        Filename2$ = OpenFileRequester("ouvrir une icone", "", "ico|*.ico", 0)
         If LoadImage(4, Filename2$)
             ImageGadget(#Button_2, 145, 105, 70, 50, ImageID(4))
         EndIf
         
       Case #Button_3
        Filename3$ = OpenFileRequester("ouvrir une icone", "", "ico|*.ico", 0)
         If LoadImage(5, Filename3$)
             ImageGadget(#Button_3, 215, 105, 65, 50, ImageID(5))
         EndIf
       
       Case #Button_4
        Filename4$ = OpenFileRequester("ouvrir une icone", "", "ico|*.ico", 0)
         If LoadImage(6, Filename4$)
             ImageGadget(#Button_4, 280, 105, 70, 50, ImageID(6))
         EndIf
       
       Case #Button_5
        Filename5$ = OpenFileRequester("ouvrir une icone", "", "ico|*.ico", 0)
         If LoadImage(7, Filename5$)
             ImageGadget(#Button_5, 350, 105, 65, 50, ImageID(7))
         EndIf
       
       Case #Button_6
        Filename6$ = OpenFileRequester("ouvrir une icone", "", "ico|*.ico", 0)
         If LoadImage(8, Filename6$)
             ImageGadget(#Button_6, 415, 105, 75, 50, ImageID(8))
         EndIf
       
       Case #Button_7
        Filename7$ = OpenFileRequester("ouvrir une icone", "", "ico|*.ico", 0)
         If LoadImage(9, Filename7$)
             ImageGadget(#Button_7, 490, 105, 60, 50, ImageID(9))
         EndIf
         
       Case #Button_8
        Filename8$ = OpenFileRequester("ouvrir une icone", "", "ico|*.ico", 0)
         If LoadImage(10, Filename8$)
             ImageGadget(#Button_8, 550, 105, 75, 50, ImageID(10))
         EndIf
         
       Case #Button_9
        Filename9$ = OpenFileRequester("ouvrir une icone", "", "ico|*.ico", 0)
         If LoadImage(11, Filename9$)
             ImageGadget(#Button_9, 625, 105, 80, 50, ImageID(11))
         EndIf
       
       Case #Button_10
        Filename10$ = OpenFileRequester("ouvrir une icone", "", "ico|*.ico", 0)
         If LoadImage(12, Filename10$)
             ImageGadget(#Button_10, 705, 105, 60, 50, ImageID(12))
         EndIf
         
       Case #Button_11
        Filename11$ = OpenFileRequester("ouvrir une icone", "", "ico|*.ico", 0)
         If LoadImage(13, Filename11$)
             ImageGadget(#Button_11, 765, 105, 70, 50, ImageID(13))
         EndIf
       
       Case #Button_save
        Filename$ = SaveFileRequester("Sauvegarder", "toolbar", "png|*.png", 0)
          If Filename$
            Select SelectedFilePattern()
              Case 0 
                Extension$  = "png"
            EndSelect
             If LCase(GetExtensionPart(Filename$)) <> "png"
              Filename$ + "." + "png"
             EndIf
              If SaveImage(0, Filename$, #PB_ImagePlugin_PNG)
              EndIf
               CloseWindow(#Window_0)
               End
           EndIf 
           
       Case #Button_annuler
        End
         
     EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow
.

voila j'espert egalement utiliser la bonne technique a moin que quelquin en connait une plus simple ?. je prend :D . merci


@++

Publié : dim. 27/août/2006 21:19
par Flype
connais tu ces fonctions ?

UsePNGImageDecoder()
UsePNGImageEncoder()

UseJPEGImageDecoder()
UseJPEGImageEncoder()

je pense que c'est ce que tu as besoin.
regarde la doc pour savoir comment on les utilise.

Publié : dim. 27/août/2006 22:11
par venom
:)
oui, sa je connais mais je ne voie pas trop comment coder pour dir que l'icone 1 puis 2 puis etc... se colle ensemble pour faire qu'un fichier png c'est sur sa que je bloque :?
si quelquin aurait une idee pour m'expliquer a peut pres sa serait coool?


@++

Publié : dim. 27/août/2006 23:27
par Anonyme
Salut,

Tout d'abord, tu créer une image de la taille de ta toolbar
Ensuite tu dessines chaque icones dedans. point()/plot()
Fait bien attention de décallé le dessin de la nouvelle icone à chaque fois
sinon, elle va se dessiner sur une autre icone.
Si tu bloques vraiment, demain, je te le code. :wink:

@++

Publié : dim. 27/août/2006 23:37
par venom
bin ecoute je te remecie Cpl.Bator, je vais essayer ce soir moi qui voulais aller me coucher pas trop tard :lol: et oui c'est la reprise :cry: pu de temps pour purebasic du moin beaucoup moin.

je te tien au courant demain Cpl.Bator :wink:


@++

Publié : lun. 28/août/2006 11:16
par Anonyme
Salut, j'ai tout recodé , tu peut charger 11 images de n'importe quelle taille, tout est redimensionner en 64x64, la "toolbar" fait quand à elle 768px par 64px
A toi de modifier le code pour tes besoins. en revanche, tu ne peut pas lire d'icones :p
c'est pas très optimiser , j'lai coder en 10min ... , mais bon, ca à l'air de fonctionner. :wink:

Un coup de colorer :D



Enumeration
#Win_main
#ToolBarFinale
EndEnumeration

UsePNGImageDecoder () : UseTGAImageDecoder () : UseJPEGImageDecoder () : UsePNGImageEncoder ()

InitSprite () : InitKeyboard ()

OpenWindow ( #Win_main ,0,0,768,128, "ToolBar" , #PB_Window_SystemMenu | #PB_Window_ScreenCentered )
OpenWindowedScreen ( WindowID ( #Win_main ),0,0,768,128,1,0,0)


CreateSprite ( #ToolBarFinale ,768,64)


Global Current_Icon.l,FlagK.b
Declare Draw_Selecteur()
Declare Load_Image()

Repeat
 event = WindowEvent ()
   ClearScreen ( RGB (0,0,0)) : ExamineKeyboard ()
  
     DisplaySprite ( #ToolBarFinale ,0,32)
    Draw_Selecteur()

If KeyboardPushed ( #PB_Key_S ) And FlagK=0 : FlagK=1
SaveSprite ( #ToolBarFinale , SaveFileRequester ( "Sauvegarder" , "toolbar" , "png|*.png" , 0)+ ".png" , #PB_ImagePlugin_PNG )
EndIf


  FlipBuffers ()
Until event = #PB_Event_CloseWindow



Procedure Draw_Selecteur()

  ; On dessine le texte puis le selecteur vert
  StartDrawing ( ScreenOutput ())
  DrawText (0,0, "<S> Pour sauvegarder | <SPACE> pour charger une image" )
  DrawingMode ( #PB_2DDrawing_Outlined )
  Box (64*Current_Icon,32,64,64, RGB (0,255,0))
  StopDrawing ()
 
  ; Gestion du selecteur avec le clavier
  If KeyboardPushed ( #PB_Key_Right ) And FlagK=0 : FlagK=1 : Current_Icon+1 : EndIf
  If KeyboardPushed ( #PB_Key_Left ) And FlagK=0 : FlagK=1 : Current_Icon-1 : EndIf
  If KeyboardPushed ( #PB_Key_All )=0 : FlagK=0 : EndIf
  If KeyboardPushed ( #PB_Key_Space ) And FlagK=0 : FlagK=1 :Load_Image() : EndIf
  ;Blocage du selecteur aux bords de la fenetre
  If Current_Icon<0 : Current_Icon=0 : EndIf
  If Current_Icon=>(768/64)-1 : Current_Icon=(768/64)-1 : EndIf
 
 
 
EndProcedure



Procedure Load_Image()
Protected IMG.l




LoadImage (IMG, OpenFileRequester ( "Ouvrir image" , "" , "Images|*.ico;*.png;*.jpeg;*.tga;*.bmp;*.jpg" ,0))
ResizeImage (IMG,64, 64)

Dim Temp(64,64)

StartDrawing ( ImageOutput (IMG))
For y = 0 To 64-1
  For x = 0 To 64-1
  Temp(x,y)= Point (x,y)
  Next
Next
StopDrawing ()

FreeImage (IMG)

StartDrawing ( SpriteOutput ( #ToolBarFinale ))
  Box (64*Current_Icon,0,64,64, RGB (0,0,0))
   For y = 0 To 64-1
    For x = 0 To 64-1
  
     Plot (x+(64*Current_Icon),y,Temp(x,y))
  
    Next
   Next
StopDrawing ()




EndProcedure





Publié : lun. 28/août/2006 11:43
par venom
bonjour,

bin ecoute Cpl.Bator j'aurais jamais penser comme sa mais sa defonce grave. me reste plus qu'a moddifier 2, 3 petit truck puis sa sera niquel franchement je te remercie beaucoup sa fonctionne impec :wink: . j'aurais jamais trouver de cette façon la :) encore merci.
j'lai coder en 10min ...
bin chapeau :wink: sa n'aurait surement pas etait mon cas.



@++