Modifier boutons, scrollbargadget etc...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
RedStar
Messages : 38
Inscription : dim. 20/déc./2009 19:28
Localisation : Languedoc-Roussillon

Modifier boutons, scrollbargadget etc...

Message par RedStar »

Bonjour tout le monde !

Alors voila, aujourd'hui je suis confronté à un problème et j'aurait besoin de votre aide en espérant que vous pourrez répondre à mes demandes :lol:

Bien voila, je souhaiterais pouvoir modifier l'apparence d'un bouton sur une fenêtre ou par exemple la scrollbar pour éviter que sa m'affiche les boutons de windows tout moches etc (oui je n'aime pas trop les boutons XP :lol: ). En C c'est faisable avec GTK et j'aimerais savoir si vous connaîtriez un moyen similaire ou alors une astuce pour modifier ceci.

Je vous remercie d'avance pour vos réponses constructives.

Amicalement,

RedStar.

PS : J'ai déjà effectué plusieurs recherches sur les forums, je n'ai trouvé qu'une seule astuce pour changer l'apparence d'un bouton, mais j'aimerais, si vous en avez une autre, me proposer une astuce, Merci ! :D
Image
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: Modifier boutons, scrollbargadget etc...

Message par jbernard13 »

Bonjour

as tu regarder dans la doc ?
tu as la commande ButtonImageGadget() qui permet de changer l'apparence du bouton par une image , à toi de dessiné un beau bouton ...
Jbernard13
Avatar de l’utilisateur
RedStar
Messages : 38
Inscription : dim. 20/déc./2009 19:28
Localisation : Languedoc-Roussillon

Re: Modifier boutons, scrollbargadget etc...

Message par RedStar »

Merci bien, mais je parlais de modifier totalement le bouton, de A à Z niveau apparence, pareil pour un scrollgadget, ou une liste déroulante par exemple, merci quand même d'avoir proposé ton aide ^^

RedStar.

Edit : Parfois une image parle plus que du texte ^^, alors voici un exemple de ce que je voudrais faire : http://img.clubic.com/photo/00513560.jpg
Image
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Modifier boutons, scrollbargadget etc...

Message par Kwai chang caine »

Bonjour REDSTAR

Oui tu as raison, napoleon disait lui meme qu'un dessin vaut mieux qu'une grande explication 8)

Tu peux aussi utiliser les gadgets images et cliquer dessus, car ils recoivent les evenements.

Autrement sur le forum, y'a des boutons modifiés autour d'une image.
Je ne sais pas si tu le sais, mais ça s'appelle "Skinné", fais une recherche sur ce genre de code
Car on peut skinner les fenetres et certains gadgets
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
RedStar
Messages : 38
Inscription : dim. 20/déc./2009 19:28
Localisation : Languedoc-Roussillon

Re: Modifier boutons, scrollbargadget etc...

Message par RedStar »

Bonjour KCC ^^

Oui j'ai deja effectué beaucoup de recherches sur les forums concernant le mot "Skin", mais bon, je suis pas vraiment satisfait du résultat :lol: ...

Sinon je pensait carrément réinventer la roue en créant mon application avec la librarie 2D sdl incluse dans purebasic, je pense que c'est faisable, sa pourrait avoir un bon rendu mais ca serait légèrement compliqué ... surtout avec ce que je veut faire :mrgreen:
Image
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Modifier boutons, scrollbargadget etc...

Message par Le Soldat Inconnu »

Après, il faut passer tous les gadget en OwnerDraw

En gros API windows dans tous les sens et gros gros travail en perspective.

Tu peux récupérer la lib ButtonImageGadgetEx sur mon, il y a la source dedans. Tu verras le principe du ownerdraw pour les boutons.

Bon courage
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: Modifier boutons, scrollbargadget etc...

Message par jbernard13 »

bonsoir

tu as ce logiciel( payant) qui permet crée des interfaces et des skins

http://purevision.reelmedia.org/
Jbernard13
Avatar de l’utilisateur
RedStar
Messages : 38
Inscription : dim. 20/déc./2009 19:28
Localisation : Languedoc-Roussillon

Re: Modifier boutons, scrollbargadget etc...

Message par RedStar »

Merci je connaît mais bon... Je ne supporte pas vraiment le payant ^^, sauf si sa en vaux vraiment la peine... :mrgreen:
Image
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: Modifier boutons, scrollbargadget etc...

Message par jbernard13 »

Jbernard13
kwandjeen
Messages : 204
Inscription : dim. 16/juil./2006 21:44

Re: Modifier boutons, scrollbargadget etc...

Message par kwandjeen »

C'est tout simple, mais ça a l'avantage de ne pas utiliser l'api Window et de faire des boutons tout à fait personnalisés. A toi de modifier/améliorer selon ton usage :wink:

Code : Tout sélectionner

Structure bouton
  pb_gadget.l
  image.l
  image_over.l
  image_clic.l
  image_inactif.l
  etat.b
  mode.b
EndStructure

  Global NewMap kw_bouton.bouton()

Procedure kw_create_bouton(id_gadget,x,y,tx,ty,image,image_over,image_clic)
  gadget = ImageGadget(id_gadget,x,y,tx,ty,ImageID(image))
  If id_gadget = #PB_Any
    id_gadget = gadget
  EndIf
  AddMapElement(kw_bouton(),Str(id_gadget))
  kw_bouton()\etat = 1
  kw_bouton()\image = image
  kw_bouton()\image_over = image_over
  kw_bouton()\image_clic = image_clic
  kw_bouton()\image_inactif = image
  kw_bouton()\pb_gadget = id_gadget
  ProcedureReturn id_gadget
EndProcedure
  
Procedure kw_event_bouton()
  retour = -1
  If IsWindow(GetActiveWindow())
    mx = WindowMouseX(GetActiveWindow())
    my = WindowMouseY(GetActiveWindow())
    ForEach kw_bouton()
      If kw_bouton()\etat
        a = Round((mx-GadgetX(kw_bouton()\pb_gadget))/GadgetWidth(kw_bouton()\pb_gadget),#PB_Round_Down)
        b = Round((my-GadgetY(kw_bouton()\pb_gadget))/GadgetHeight(kw_bouton()\pb_gadget),#PB_Round_Down)
        If Not a|b And kw_bouton()\mode = 0
          kw_bouton()\mode = 1
          SetGadgetState(kw_bouton()\pb_gadget,ImageID(kw_bouton()\image_over))
        ElseIf a|b
          kw_bouton()\mode = 0
          SetGadgetState(kw_bouton()\pb_gadget,ImageID(kw_bouton()\image))
        EndIf
        If kw_bouton()\mode = 1 And EventType() = #PB_EventType_LeftClick
          SetGadgetState(kw_bouton()\pb_gadget,ImageID(kw_bouton()\image_clic))
          retour = kw_bouton()\pb_gadget
          Delay(80)
          SetGadgetState(kw_bouton()\pb_gadget,ImageID(kw_bouton()\image_over))
        EndIf
      EndIf
    Next    
  EndIf
  ProcedureReturn retour
EndProcedure
  
  Procedure kw_enable_bouton(id_gadget,etat)
    kw_bouton(Str(id_gadget))\etat = etat
    If etat = 0
      SetGadgetState(id_gadget,ImageID(kw_bouton(Str(id_gadget))\image_inactif))
    EndIf    
  EndProcedure
  
  Procedure kw_set_image_bouton(id_gadget,mode,image)
    Select mode
      Case 1
        kw_bouton(Str(id_gadget))\image_over = image
      Case 2
        kw_bouton(Str(id_gadget))\image_clic = image
      Case 3
        kw_bouton(Str(id_gadget))\image_inactif = image
        If kw_bouton(Str(id_gadget))\etat = 0
          SetGadgetState(id_gadget,ImageID(kw_bouton(Str(id_gadget))\image_inactif))
        EndIf
      Default
        kw_bouton(Str(id_gadget))\image = image
    EndSelect
  EndProcedure
  
  CreateImage(1,168,35)
  StartDrawing(ImageOutput(1))
    Box(0,0,168,35,RGB(137, 172, 186))  
  StopDrawing()
  
  
  If OpenWindow(0, 0, 0, 245, 105, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If LoadImage(0, "C:\Program Files\PureBasic\Examples\Sources\Data\purebasic.bmp")    ; changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image

      kw_create_bouton(0,10,10,100,83,0,1,1) ;gadget,x,y,width,height,image,repos,image_survol,image_clic on pourrai rajouter directement l'image inactif au lieu de passer par setimage
      kw_create_bouton(1,10,50,100,83,0,1,0)

    EndIf
    Repeat
      Select kw_event_bouton()  
        Case 0
          Debug "clic sur 0"
          ;kw_set_image_bouton(1,3,0)
        Case 1 
          Debug "clic sur 1"
      EndSelect
    Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
Répondre