Comment faire pour que les boutons ne clignotent pas

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Comment faire pour que les boutons ne clignotent pas

Message par Micoute »

Bonjour à tous,
je souhaiterais compléter mon programme, mais je voudrais changer le système de rafraichissement des gadgets, car ça clignote beaucoup parce mon timer est réglé sur constante de 50 millisecondes, alors je viens solliciter votre bienveillante pour régler ce problème et je vous en remercie énormément.

Code : Tout sélectionner

;TODO ajouter les formes trapèze et triangle
;TODO prévoir des reliefs 3D : Plat, Tridimentionnel net, Tridimentionnel, Bordé, Métal tridimentionnel, Gel, Verre
;TODO prévoir la sauvegarde des paramètres

Enumeration Polices
  #Police
EndEnumeration

Structure ListeBouton
  Titre.s                 ; Titre du gadget
  Actif.b                 ; #True ou #False
  IDGadget.i              ; ID image-gadget
  BoutonImageID_dessine.i ; id de l'image pour dessiner dessus
  BoutonImageID_normal.i  ; id du fond normal de l'image
  BoutonImageID_survol.i  ; id du fond survolé de l'image
  x.i                     ; position X du gadget
  y.i                     ; position Y du gadget
  Largeur.i               ; Largeur du gadget
  Hauteur.i               ; Hauteur du gadget
  Forme.i                 ; forme du bouton 1 = rectangle, 2 = arrondie, 3 = ronde, 4 Géllule
  RotationDegrade.i       ; dégradé du bouton 0 = circulaire, 1 = diagonale tombante, 2 = diagonale montante, 3 = horizontale, 4 = verticale
  IconeImageID.i          ; ID de l'icône
  IconeLargeur.i          ; Largeur de l'icône
  IconeHauteur.i          ; Hauteur de l'icône
  Rayon.i                 ; Rayon de courbure de l'arrondi
  RayonX.i                ; Rayon x de l'ellipse
  RayonY.i                ; Rayon y de l'ellipse
  IconeX.i                ; Position X de l'icône dans le Gadget
  IconeY.i                ; Position Y de l'icône dans le Gadget
  TitreX.i                ; Position X du Titre dans le Gadget
  TitreY.i                ; Position Y du Titre dans le Gadget
  NomPolice.s             ; Nom de la police
  TaillePolice.i          ; Taille de la police
  StylePolice.i           ; Style de la police
  DiminutionOmbre.i       ; Diminution de l'ombre
  IDFenetre.i             ; ID de la fenêtre où ce bouton est dessiné 
  CouleurNormal1.i
  CouleurNormal2.i
  CouleurSurvol1.i
  CouleurSurvol2.i
  CouleurClic1.i
  CouleurClic2.i
  Contour.i
  CouleurTitre.i
  CouleurSousTitre.i
EndStructure

Structure ML_Bouton
  Forme.i                 ; forme du bouton 1 = rectangle, 2 = arrondie, 3 = ronde, 4 Gélule
  RotationDegrade.i       ; dégradé du bouton 1 = linéaire, 2 = circulaire, 3 gélule, 4 boîte, 5 conique
  BoutonImageID_normal.i
  BoutonImageID_survol.i
  NomPolice.s
  TaillePolice.i
  StylePolice.i
  CouleurPolice.i
  DiminutionOmbre.i
  EpaisseurLigne.i
  List ListeBouton.ListeBouton()
EndStructure

Global MonBouton.ML_Bouton 

Global.b SourisSurGadget, SourisCliquee

Procedure SourisSurBouton(IdFenetre, IdBouton)
  Global Sx = WindowMouseX(IdFenetre)
  Global Sy = WindowMouseY(IdFenetre)
  Global Bx = MonBouton\ListeBouton()\X
  Global By = MonBouton\ListeBouton()\Y
  Global Bl = MonBouton\ListeBouton()\Largeur
  Global Bh = MonBouton\ListeBouton()\Hauteur
  Global Id = MonBouton\ListeBouton()\IDGadget
  
  If Sx > Bx And Sx < (Bx + Bl) And Sy > By And Sy < (By + Bh)
    ProcedureReturn #True
  EndIf
  
  ProcedureReturn #False
EndProcedure

Procedure AjouterContour(x.d, y.d, Largeur.d, Hauteur.d, RayonCoin, Drapeau = #PB_Path_Default)
  Select MonBouton\ListeBouton()\Forme
    Case 1 ;Rectangle ou Carré
      MovePathCursor(x + RayonCoin, y, Drapeau & #PB_Path_Relative)
      ;coin haut gauche
      AddPathEllipse(0, RayonCoin, RayonCoin, RayonCoin, 180, -90, #PB_Path_Relative)
      ;Ligne supérieure
      AddPathLine(Largeur-RayonCoin*2, 0, #PB_Path_Relative)
      ;Coin haut droite
      AddPathEllipse(0, RayonCoin, RayonCoin, RayonCoin, -90, 0, #PB_Path_Connected | #PB_Path_Relative)
      ;Ligne verticale droite
      AddPathLine(0, Hauteur-RayonCoin*2, #PB_Path_Relative)
      ;Coin Bas droite
      AddPathEllipse(-RayonCoin, 0, RayonCoin, RayonCoin, 0, 90, #PB_Path_Connected | #PB_Path_Relative)
      ;Ligne inférieure
      AddPathLine(RayonCoin + RayonCoin-Largeur, 0, #PB_Path_Relative)
      ;Coin bas gauche
      AddPathEllipse(0, -RayonCoin, RayonCoin, RayonCoin, 90, 180, #PB_Path_Connected | #PB_Path_Relative)
      ClosePath()
    Case 3 ;Rond
      MovePathCursor(x + RayonCoin, y, Drapeau & #PB_Path_Relative)
      AddPathCircle(x+Largeur/2, y+Largeur/2, largeur)
      ClosePath()
    Case 4 ;Ellipse
      MovePathCursor(x + RayonCoin, y, Drapeau & #PB_Path_Relative)
      AddPathEllipse(x+largeur/2, y+hauteur/2, Largeur/2, Hauteur/2)
      ClosePath()
    Case 2, 5 ;Boutons avec coins arrondis, dont pillule
      MovePathCursor(x + RayonCoin, y, Drapeau & #PB_Path_Relative)
      ;coin haut gauche
      AddPathEllipse(0, RayonCoin, RayonCoin, RayonCoin, 180, -90, #PB_Path_Relative)
      ;Ligne supérieure
      AddPathLine((Largeur-RayonCoin*2)-Epaisseur/2, 0, #PB_Path_Relative)
      ;Coin haut droite
      AddPathEllipse(0, RayonCoin, RayonCoin, RayonCoin, -90, 0, #PB_Path_Connected | #PB_Path_Relative)
      ;Ligne verticale droite
      AddPathLine(0, (Hauteur-RayonCoin*2)-Epaisseur/2, #PB_Path_Relative)
      ;Coin Bas droite
      AddPathEllipse(-RayonCoin, 0, RayonCoin, RayonCoin, 0, 90, #PB_Path_Connected | #PB_Path_Relative)
      ;Ligne inférieure
      AddPathLine((RayonCoin + RayonCoin-Largeur) + Epaisseur/2, 0, #PB_Path_Relative)
      ;Coin bas gauche
      AddPathEllipse(0, -RayonCoin, RayonCoin, RayonCoin, 90, 180, #PB_Path_Connected | #PB_Path_Relative)
      ClosePath()      
  EndSelect
EndProcedure

Procedure CreerBouton(Fenetre, Id, x, y, Titre.s = "", Largeur = 0, Hauteur = 0, TaillePolice = 10, 
                      CouleurNormal1 = $FFFF9600, CouleurNormal2 = $FF000000,
                      CouleurSurvol1 = $FFFFE600, CouleurSurvol2 = $FF000000,
                      CouleurClic1   = $AAAAAA00, CouleurClic2   = $FF000000,
                      Contour        = $FF000000,
                      CouleurTitre   = $FFFFFFFF, CouleurSousTitre = $FF000000)
  ;Remplir la liste
  AddElement(MonBouton\ListeBouton())
  With MonBouton\ListeBouton()
    \IDGadget = Id
    \X  = x
    \Y  = y
    \Largeur = Largeur
    \Hauteur = Hauteur
    \Titre = Titre.s
    \TaillePolice = TaillePolice
    \IDFenetre = IdFenetre
    \CouleurNormal1 = CouleurNormal1
    \CouleurNormal2 = CouleurClic2
    \CouleurSurvol1 = CouleurSurvol1
    \CouleurSurvol2 = CouleurSurvol2
    \CouleurClic1   = CouleurClic1
    \CouleurClic2   = CouleurClic2
    \Contour        = Contour
    \CouleurTitre   = CouleurTitre
    \CouleurSousTitre = CouleurSousTitre
    \Forme = 1
  EndWith 
EndProcedure

Procedure CreerBoutonArrondi(Fenetre, Id, x, y, Titre.s = "", Largeur = 0, Hauteur = 0,Rayon = 0, TaillePolice = 10, 
                             CouleurNormal1 = $FFFF9600, CouleurNormal2 = $FF000000,
                             CouleurSurvol1 = $FFFFE600, CouleurSurvol2 = $FF000000,
                             CouleurClic1   = $AAAAAA00, CouleurClic2   = $FF000000,
                             Contour        = $FF000000,
                             CouleurTitre   = $FFFFFFFF, CouleurSousTitre = $FF000000)
  ;Remplir la liste
  AddElement(MonBouton\ListeBouton())
  With MonBouton\ListeBouton()
    \IDGadget = Id
    \X  = x
    \Y  = y
    \Largeur = Largeur
    \Hauteur = Hauteur
    \Titre = Titre.s
    \Rayon = Rayon
    \TaillePolice = TaillePolice
    \IDFenetre = IdFenetre
    \CouleurNormal1 = CouleurNormal1
    \CouleurNormal2 = CouleurClic2
    \CouleurSurvol1 = CouleurSurvol1
    \CouleurSurvol2 = CouleurSurvol2
    \CouleurClic1   = CouleurClic1
    \CouleurClic2   = CouleurClic2
    \Contour        = Contour
    \CouleurTitre   = CouleurTitre
    \CouleurSousTitre = CouleurSousTitre
    \Forme = 2
  EndWith
EndProcedure

Procedure CreerBoutonRond(Fenetre, Id, x, y, Titre.s = "", Rayon = 0, TaillePolice = 10, 
                          CouleurNormal1 = $FFFF9600, CouleurNormal2 = $FF000000,
                          CouleurSurvol1 = $FFFFE600, CouleurSurvol2 = $FF000000,
                          CouleurClic1   = $AAAAAA00, CouleurClic2   = $FF000000,
                          Contour        = $FF000000,
                          CouleurTitre   = $FFFFFFFF, CouleurSousTitre = $FF000000)
  ;Remplir la liste
  AddElement(MonBouton\ListeBouton())
  With MonBouton\ListeBouton()
    \IDGadget = Id
    \X  = x
    \Y  = y
    \Largeur = Rayon/4
    \Hauteur = Rayon/4
    \Titre = Titre.s
    \Rayon = Largeur/4
    \TaillePolice = TaillePolice
    \IDFenetre = IdFenetre
    \CouleurNormal1 = CouleurNormal1
    \CouleurNormal2 = CouleurClic2
    \CouleurSurvol1 = CouleurSurvol1
    \CouleurSurvol2 = CouleurSurvol2
    \CouleurClic1   = CouleurClic1
    \CouleurClic2   = CouleurClic2
    \Contour        = Contour
    \CouleurTitre   = CouleurTitre
    \CouleurSousTitre = CouleurSousTitre
    \Forme = 3
  EndWith
EndProcedure

Procedure CreerBoutonEllipse(Fenetre, Id, x, y, Titre.s = "", RayonX = 0, RayonY = 0,TaillePolice = 10, 
                             CouleurNormal1 = $FFFF9600, CouleurNormal2 = $FF000000,
                             CouleurSurvol1 = $FFFFE600, CouleurSurvol2 = $FF000000,
                             CouleurClic1   = $AAAAAA00, CouleurClic2   = $FF000000,
                             Contour        = $FF000000,
                             CouleurTitre   = $FFFFFFFF, CouleurSousTitre = $FF000000)
  ;Remplir la liste
  AddElement(MonBouton\ListeBouton())
  With MonBouton\ListeBouton()
    \IDGadget = Id
    \X  = x
    \Y  = y
    \Titre = Titre.s
    \Largeur = RayonX
    \Hauteur = RayonY
    \RayonX = RayonX
    \RayonY = RayonY
    \TaillePolice = TaillePolice
    \IDFenetre = IdFenetre
    \CouleurNormal1 = CouleurNormal1
    \CouleurNormal2 = CouleurClic2
    \CouleurSurvol1 = CouleurSurvol1
    \CouleurSurvol2 = CouleurSurvol2
    \CouleurClic1   = CouleurClic1
    \CouleurClic2   = CouleurClic2
    \Contour        = Contour
    \CouleurTitre   = CouleurTitre
    \CouleurSousTitre = CouleurSousTitre
    \Forme = 4
  EndWith
EndProcedure

Procedure CreerBoutonPillule(Fenetre, Id, x, y, Titre.s = "", Largeur = 0, Hauteur = 0, TaillePolice = 10, 
                             CouleurNormal1 = $FFFF9600, CouleurNormal2 = $FF000000,
                             CouleurSurvol1 = $FFFFE600, CouleurSurvol2 = $FF000000,
                             CouleurClic1   = $AAAAAA00, CouleurClic2   = $FF000000,
                             Contour        = $FF000000,
                             CouleurTitre   = $FFFFFFFF, CouleurSousTitre = $FF000000)
  ;Remplir la liste
  AddElement(MonBouton\ListeBouton())
  With MonBouton\ListeBouton()
    \IDGadget = Id
    \X  = x
    \Y  = y
    \Largeur = Largeur
    \Hauteur = Hauteur
    \Titre = Titre.s
    \Rayon = hauteur/2
    \TaillePolice = TaillePolice
    \IDFenetre = IdFenetre
    \CouleurNormal1 = CouleurNormal1
    \CouleurNormal2 = CouleurClic2
    \CouleurSurvol1 = CouleurSurvol1
    \CouleurSurvol2 = CouleurSurvol2
    \CouleurClic1   = CouleurClic1
    \CouleurClic2   = CouleurClic2
    \Contour        = Contour
    \CouleurTitre   = CouleurTitre
    \CouleurSousTitre = CouleurSousTitre
    \Forme = 5
  EndWith
EndProcedure

Procedure DessinerBouton()
  Protected Rayon
  With MonBouton\ListeBouton()
    If \Largeur >= \Hauteur
      Rayon = \Largeur
    Else
      Rayon = \Hauteur
    EndIf
  EndWith
  
  If StartVectorDrawing(WindowVectorOutput(IdFenetre))    
    ForEach MonBouton\ListeBouton()
      With MonBouton\ListeBouton()
        AjouterContour(\X, \Y, \Largeur, \Hauteur, \Rayon)
        VectorSourceCircularGradient(\X + \Largeur / 2, \Y + \Hauteur / 2, Rayon)
        
        If SourisCliquee = #False
          ;Etat : Bouton survolé
          If SourisSurBouton(\IdFenetre, \IDGadget) = #True
            VectorSourceGradientColor(\CouleurSurvol1, 0)
            VectorSourceGradientColor(\CouleurSurvol2, 1)
          EndIf 
          ;Etat : Bouton normal
          If SourisSurBouton(\IdFenetre, \IDGadget) = #False
            VectorSourceGradientColor(\CouleurNormal1, 0)
            VectorSourceGradientColor(\CouleurNormal2, 1)
          EndIf
        Else
          ;Etat : Bouton cliqué
          If SourisSurBouton(\IdFenetre, \IDGadget) = #True
            VectorSourceGradientColor(\CouleurClic1, 0)
            VectorSourceGradientColor(\CouleurClic2, 1)
          EndIf
        EndIf
        
        FillPath(#PB_Path_Preserve)
        ;        
        ;Dessin du contour
        VectorSourceColor(\Contour)
        ;If \Forme = 1
        ;  StrokePath(1, #PB_Path_SquareEnd)
        ;ElseIf \Forme = 2
        StrokePath(1, #PB_Path_RoundEnd)
        ;EndIf  
        
        ;Dessin du soustitre
        VectorFont(FontID(#Police), \TaillePolice)
        MovePathCursor(\X + (\Largeur - VectorTextWidth(\Titre))/2 + 4, 
                       \Y + (\Hauteur - VectorTextHeight(\Titre))/2 + 4)
        VectorSourceColor(\CouleurSousTitre)
        AddPathText(\Titre)
        FillPath()
        ;Dessin du titre
        MovePathCursor(\X + (\Largeur - VectorTextWidth(\Titre))/2, 
                       \Y + (\Hauteur - VectorTextHeight(\Titre))/2)
        VectorSourceColor(\CouleurTitre)
        AddPathText(\Titre)
        FillPath(#PB_Path_Preserve)
        VectorSourceColor(RGB(245, 245, 245))
        StrokePath(1)
      EndWith
    Next
  EndIf
  
  ;Fin du dessin
  StopVectorDrawing()
EndProcedure

Procedure DefinirCouleurTitreBouton(Id, Couleur)
  SelectElement(MonBouton\ListeBouton(), id)
  MonBouton\ListeBouton()\CouleurTitre = RGBA(Red(Couleur),Green(Couleur), Blue(Couleur), 255)
EndProcedure

Procedure DefinirCouleurSousTitreBouton(Id, Couleur)
  SelectElement(MonBouton\ListeBouton(), id)
  MonBouton\ListeBouton()\CouleurSousTitre = RGBA(Red(Couleur),Green(Couleur), Blue(Couleur), 255)
EndProcedure

Procedure DefinirTaillePoliceBouton(Id)
  Protected Police.i = FontRequester("Arial", 12, #PB_FontRequester_Effects)
  SelectElement(MonBouton\ListeBouton(), id)
  MonBouton\ListeBouton()\TaillePolice = SelectedFontSize()
EndProcedure

Procedure Clic()
  ForEach MonBouton\ListeBouton()
    If SourisSurBouton(Fenetres, MonBouton\ListeBouton()\IDGadget) = #True
      SourisCliquee = #True
      If MessageRequester("Information", "Vous avez cliqué sur le bouton " + MonBouton\ListeBouton()\IDGadget)
        SourisCliquee = #False
      EndIf
    EndIf
  Next
EndProcedure

CompilerIf #PB_Compiler_IsMainFile
  
  Enumeration Fenetres
    #Fenetre_principale
  EndEnumeration
  
  Enumeration 0 Step 20
    #Btn
  EndEnumeration  
  
  Enumeration Gadgets
    #Minuteur
  EndEnumeration
  
  If OpenWindow(#Fenetre_principale, 0, 0, 750, 320, "Bouton perso", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
    LoadFont(#Police, "Verdana", 30, #PB_Font_Bold)
    
    CreerBouton(#Fenetre_principale, #Btn+0, 10,  10, "Bouton 0", 240, 40, 20, $FF038CFF)
    
    CreerBoutonArrondi(#Fenetre_principale, #Btn+1, 10,  60, "Bouton 1", 240, 40,  4, 20, $FF037AFF)
    CreerBoutonArrondi(#Fenetre_principale, #Btn+2, 10, 110, "Bouton 2", 240, 40,  8, 20, $FF0350FF)
    CreerBoutonArrondi(#Fenetre_principale, #Btn+3, 10, 160, "Bouton 3", 240, 40, 12, 20, $FF033AFF)
    CreerBoutonArrondi(#Fenetre_principale, #Btn+4, 10, 210, "Bouton 4", 240, 40, 16, 20, $FF0326FF)
    CreerBoutonArrondi(#Fenetre_principale, #Btn+5, 10, 260, "Bouton 5", 240, 40, 20, 20, $FF0300FF)
    
    CreerBoutonRond(#Fenetre_principale, #Btn+6, 320, 100, "Bouton 6", 400, 20, $FF00B7FF)
    
    CreerBoutonEllipse(#Fenetre_principale, #Btn+7, 500,  10, "Bouton 7", 200, 50, 20, $FFD653C9)
    CreerBoutonEllipse(#Fenetre_principale, #Btn+8, 500,  70, "Bouton 8", 200, 50, 20, $FFBD53C9)
    CreerBoutonEllipse(#Fenetre_principale, #Btn+7, 500, 130, "Bouton 9", 200, 50, 20, $FFA253C9)
    
    CreerBoutonPillule(#Fenetre_principale, #Btn+8, 500, 190, "Bouton 10", 200, 50, 20, $FF8353C9)
    
    ;DefinirTaillePoliceBouton(#Btn+2)
    ;DefinirCouleurTitreBouton(#Btn+1, $FFFF)
    ;DefinirCouleurTitreBouton(#Btn+2, $FF00)
    ;DefinirCouleurTitreBouton(#Btn+3, $00)
    ;DefinirCouleurSousTitreBouton(#Btn+3, $FFFFFF)
    AddWindowTimer(#Fenetre_principale, #Minuteur, 50)
    
    BindEvent(#PB_Event_LeftClick, @Clic())
    BindEvent(#PB_Event_Timer, @DessinerBouton())
    
    Repeat
      Evenement = WaitWindowEvent()
      ;DessinerBouton()
    Until Evenement = #PB_Event_CloseWindow
  EndIf
  
CompilerEndIf
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Comment faire pour que les boutons ne clignotent pas

Message par Marc56 »

Ne redessiner le gadget que s'il obtient ou perd le focus et non pas à intervalle de temps.

GetActiveGadget()
ou
Utiliser les coordonnées x,y de la souris par rapport à x,y + taille des gadgets.

:wink:
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Comment faire pour que les boutons ne clignotent pas

Message par Mesa »

Quand on dessine sur une fenêtre, comme tu le fais (StartVectorDrawing(WindowVectorOutput(IdFenetre)) ), ça procure toujours des problèmes car le dessin n'est pas permanent. Et redessiner la fenêtre à la main engendre ce scintillement.

C'est pourquoi, on préfère utiliser un gadget, comme le canvasgadget ou l'imagegadget qui permet d'avoir une image permanente sans scintillement.

Voici une des solutions possible pour ton programme (solution inspirée de la documentation)

Code : Tout sélectionner


;
Procedure Draw0(colfond)    
  x = GetGadgetAttribute(0, #PB_Canvas_MouseX)
  y = GetGadgetAttribute(0, #PB_Canvas_MouseY)
  
  If StartVectorDrawing(CanvasVectorOutput(0))
    VectorSourceColor(colfond)   ; efface le contenu précédent
    FillVectorOutput()
    
    AddPathEllipse(100, 100, 50, 75)             ; prépare le chemin
    
    If IsInsidePath(x, y, #PB_Coordinate_Device)  ; vérifie si la souris est à l'intérieur
      VectorSourceColor(RGBA(0, 255, 0, 255))
      Debug "je suis dans la figure"
    Else
      VectorSourceColor(RGBA(0, 0, 255, 255))
      Debug " je suis en dehors de la figure"
    EndIf
    
    FillPath()                                    ; remplit le chemin 
    StopVectorDrawing()
  EndIf      
EndProcedure
Procedure Draw1(colfond)    
  x = GetGadgetAttribute(1, #PB_Canvas_MouseX)
  y = GetGadgetAttribute(1, #PB_Canvas_MouseY)
  
  If StartVectorDrawing(CanvasVectorOutput(1))
    VectorSourceColor(colfond)   ; efface le contenu précédent
    FillVectorOutput()
    
    AddPathEllipse(100, 100, 50, 75)             ; prépare le chemin
    
    If IsInsidePath(x, y, #PB_Coordinate_Device)  ; vérifie si la souris est à l'intérieur
      VectorSourceColor(RGBA(255, 255, 0, 255))
      Debug "je suis dans la figure"
    Else
      VectorSourceColor(RGBA(0, 255, 255, 255))
      Debug " je suis en dehors de la figure"
    EndIf
    
    FillPath()                                    ; remplit le chemin 
    StopVectorDrawing()
  EndIf      
EndProcedure

If OpenWindow(0, 0, 0, 420, 200, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CanvasGadget(0, 0, 0, 200, 200)
  CanvasGadget(1, 210, 0, 200, 200)
  
  StartDrawing(WindowOutput(0))
  fond = Point(10,10)|255<<24
  StopDrawing()
  
  Draw0(fond)
  Draw1(fond)
  
  Repeat
    Event = WaitWindowEvent()
    gadget= EventGadget()
    typeev=EventType()
    
    Select Event 
      Case #PB_Event_Gadget
        Select gadget
          Case 0
            Select typeev
              Case #PB_EventType_MouseMove
                Draw0(fond)
              Case #PB_EventType_MouseEnter
                Debug "==================================="
                Debug "  je viens d'entrer dans canvas 0"
                Debug "==================================="
              Case #PB_EventType_MouseLeave   
                Debug "==================================="
                Debug "  je viens de sortir de canvas 0"
                Debug "==================================="
              Case #PB_EventType_LeftClick 
                Debug "**************************"
                Debug "  clic dans canvas 0"
                Debug "**************************"
            EndSelect
          Case 1
            Select typeev
              Case #PB_EventType_MouseMove
                Draw1(fond)
              Case #PB_EventType_MouseEnter
                Debug "==================================="
                Debug "  je viens d'entrer dans canvas 1"
                Debug "==================================="
              Case #PB_EventType_MouseLeave   
                Debug "==================================="
                Debug "  je viens de sortir de canvas 1"
                Debug "==================================="
              Case #PB_EventType_LeftClick 
                Debug "**************************"
                Debug "  clic dans canvas 1"
                Debug "**************************"
            EndSelect
        EndSelect
        
        
        
        
    EndSelect
    
  Until Event = #PB_Event_CloseWindow
EndIf

M.
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment faire pour que les boutons ne clignotent pas

Message par Micoute »

Merci pour vos réponses que j'ai beaucoup appréciés.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre