
...
bon , j'interviens ....
on a deja répété 1000 fois qu'en Purebasic on peut TOUT faire ... (ou presque)
il faut prendre en compte une chose fondamentale
il permet de Dessiner ce qu'on veux ,sur un gadget, une fenetre, le Bureau ( qui est je le rappel aussi une fenetre )
Purebasic est pour le Coup "Bas niveau" , ça signifie , qu'il peut modifier un dessin présent a l'ecran
que ce dessin soit un gadget, une fenetre , et meme un gadget ou une fenetre ne nous appartenant pas !! (si! si! )
tout ceci a été abordé sur notre Forum en Français dans le Text
alors , revoici donc un Exemple Breveté Moi-meme
pour le coup , je vais meme en mettre 2 des exemples !
le premier , affiche des Frames coloré , avec Cadre et Fond colorés de façon differente !
le Deuxieme code Affiche les cadres, dont l'un Clignote chaque seconde , Emploi du Timer obligatoire
Code : Tout sélectionner
Declare cadre_color(x,y,larg,haut, couleur_cadre.i,couleur_fond.i)
enumeration
#win
#gadget1
#gadget2
#gadget3
#gadget4
endenumeration
If OpenWindow(#win, 0, 0, 320, 250, "Frame3DGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Frame3DGadget(#gadget1, 10, 10, 300, 50, "Cadre en relief standard")
Frame3DGadget(#gadget2, 10, 70, 300, 50, "", #PB_Frame3D_Single)
Frame3DGadget(#gadget3, 10, 130, 300, 50, "", #PB_Frame3D_Double)
Frame3DGadget(#gadget4, 10, 190, 300, 50, "", #PB_Frame3D_Flat)
AddWindowTimer(#win,123,1000) ; Ajout timer pour le clignotement
Repeat
Event = WindowEvent()
select Event
case #PB_Event_Timer
if EventTimer() = 123
; ******* grosse arnaque a Dobro ;o) ***************
StartDrawing(WindowOutput(#win))
cadre_color(10, 25, 300, 35, rgb(255,0,0),rgb(125,125,125))
cadre_color(10, 70, 300, 50, rgb(255,255,0),rgb(0,125,255))
cadre_color(10, 130, 300, 50, rgb(255,0,255),rgb(255,125,0)) ;d
cadre_color(10, 190, 300, 50, rgb(0,255,125),rgb(100,255,125))
StopDrawing()
; *********************************************
endif
Endselect
Until Event= #PB_Event_CloseWindow
EndIf
Procedure cadre_color(x,y,larg,haut, couleur_cadre.i,couleur_fond.i)
; By Dobro
drawingmode(#PB_2DDrawing_Outlined )
box(x, y, larg,haut, couleur_cadre.i)
FillArea(x+2, y+2, -1,couleur_fond.i)
drawingmode(#PB_2DDrawing_Default )
Endprocedure
; EPB
et voici l'autre exemple qui montre qu'on peux meme faire clignoter un cadre !!
et sans CallBack !!
Code : Tout sélectionner
Declare cadre_color(x,y,larg,haut, couleur_cadre.i,couleur_fond.i)
enumeration
#win
#gadget1
#gadget2
#gadget3
#gadget4
endenumeration
If OpenWindow(#win, 0, 0, 320, 250, "Frame3DGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Frame3DGadget(#gadget1, 10, 10, 300, 50, "Cadre en relief standard")
Frame3DGadget(#gadget2, 10, 70, 300, 50, "", #PB_Frame3D_Single)
Frame3DGadget(#gadget3, 10, 130, 300, 50, "", #PB_Frame3D_Double)
Frame3DGadget(#gadget4, 10, 190, 300, 50, "", #PB_Frame3D_Flat)
AddWindowTimer(#win,123,1000) ; Ajout timer pour le clignotement
Repeat
Event = WindowEvent()
select Event
case #PB_Event_Timer
if EventTimer() = 123
; ******* grosse arnaque a Dobro ;o) ***************
StartDrawing(WindowOutput(#win))
cadre_color(10, 25, 300, 35, rgb(255,0,0),rgb(125,125,125)) ; cadre 1
cadre_color(10, 70, 300, 50, rgb(255,255,0),rgb(0,125,255)) ; cadre 2
if stat2=1
cadre_color(10, 130, 300, 50, rgb(255,0,255),rgb(255,125,0)) ; ici on dessine sur le meme cadre
stat2=0
Else
cadre_color(10, 130, 300, 50, rgb(255,255,0),rgb(0,0,0)) ; ; ici on dessine sur le meme cadre
stat2=1
endif
cadre_color(10, 190, 300, 50, rgb(0,255,125),rgb(100,255,125)) ; cadre 4
StopDrawing()
; *********************************************
endif
Endselect
Until Event= #PB_Event_CloseWindow
EndIf
Procedure cadre_color(x,y,larg,haut, couleur_cadre.i,couleur_fond.i)
; By Dobro
drawingmode(#PB_2DDrawing_Outlined )
box(x, y, larg,haut, couleur_cadre.i)
FillArea(x+2, y+2, -1,couleur_fond.i)
drawingmode(#PB_2DDrawing_Default )
Endprocedure
; EPB
on peut avec ce principe dessiner des boutons de couleur, des Canvas avec tour Clignotant,
des Progress Bar coloré , etc ....