Gadget Frame3D
Gadget Frame3D
Bonjour à tous,
C'est bien agréable les Gadget Frame3D, avec les lignes pour encadrer les objets.
Ce que je souhaite c'est de pouvoir colorier les lignes, et uniquement les lignes, de la couleur que je souhaite (du vert, du bleu, etc.) alors que par défaut ces lignes sont en noirs.
Comment donc faire pour que ces lignes soient de la couleur que l'on souhaite ?
La couleur des lignes est bien stockée quelque part, mais il faut trouver où ?
Je pense que les APIs sont la solution mais alors pour faire ça il faut être bien calé dans le domaine.
Y aurait-il quelqu'un qui connaisse la solution et merci à lui, pour moi et pour les autres, de nous éclairer de sa lanterne.
C'est bien agréable les Gadget Frame3D, avec les lignes pour encadrer les objets.
Ce que je souhaite c'est de pouvoir colorier les lignes, et uniquement les lignes, de la couleur que je souhaite (du vert, du bleu, etc.) alors que par défaut ces lignes sont en noirs.
Comment donc faire pour que ces lignes soient de la couleur que l'on souhaite ?
La couleur des lignes est bien stockée quelque part, mais il faut trouver où ?
Je pense que les APIs sont la solution mais alors pour faire ça il faut être bien calé dans le domaine.
Y aurait-il quelqu'un qui connaisse la solution et merci à lui, pour moi et pour les autres, de nous éclairer de sa lanterne.
Re: Gadget Frame3D
En fait les gadgets 3D proviennent de CEGUI http://www.cegui.org.uk/wiki/index.php/Main_Page et purebasic utilise des skins préfabriqués (voir dans le dossier PureBasic\Examples\3D\Data\GUI), tu peux toujours y bricoler les couleurs des images présentes. Sinon, il va falloir créer de nouveaux skins à l'aide du sdk de cegui, à télécharger sur leur site.
A ma connaissances, il n'y a pas grande aide sur les forums de PB, c'est dommage, tu pourrais ouvrir la voie
Mesa.
A ma connaissances, il n'y a pas grande aide sur les forums de PB, c'est dommage, tu pourrais ouvrir la voie

Mesa.
Re: Gadget Frame3D
je pense qu'il veut parler du Frame3DGadget(), et non du Frame3DGadget3D().
Il cherche donc les api pour modifier la couleur d'un gadget. J'ai vu ça sur le forum il n'y a pas si longtemps, mais je ne sais plus ou.
Cherche du coté des SendMessage_()
Il cherche donc les api pour modifier la couleur d'un gadget. J'ai vu ça sur le forum il n'y a pas si longtemps, mais je ne sais plus ou.
Cherche du coté des SendMessage_()
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel
)
Mon site : CeriseCode (Attention Chantier perpétuel

Re: Gadget Frame3D
ah oui, c'est vrai...
On ne peux pas utiliser les api avec ce gadget comme on le ferait avec un bouton, car c'est un gadget créé par Fred, il me semble.
Il faut le recréer avec un canvas ou avec le code de Danilo
http://forums.purebasic.com/english/vie ... 13&t=49733
Mesa.
On ne peux pas utiliser les api avec ce gadget comme on le ferait avec un bouton, car c'est un gadget créé par Fred, il me semble.
Il faut le recréer avec un canvas ou avec le code de Danilo
http://forums.purebasic.com/english/vie ... 13&t=49733
Code : Tout sélectionner
Procedure MyFrame3DGadget(window, gadget, x, y, width, height, text$, frontcolor=0, backcolor=0, shadow=$FFFFFF)
background = GetSysColor_(#COLOR_BTNFACE);GetWindowColor(window))
container = ContainerGadget(gadget,x,y,width,height)
img = CreateImage(#PB_Any,width,height)
If img And StartDrawing(ImageOutput(img))
Box(0,0,width,height,background)
DrawingMode(#PB_2DDrawing_Outlined)
RoundBox(6,6,width-12,height-12,3,3,shadow)
RoundBox(5,5,width-10,height-10,3,3,backcolor)
DrawingFont(GetGadgetFont(#PB_Default))
DrawText(10,0," "+text$+" ",frontcolor, background)
StopDrawing()
DisableGadget(ImageGadget(#PB_Any,0,0,width,height,ImageID(img)),1)
EndIf
ProcedureReturn container
EndProcedure
OpenWindow(0, 0, 0, 250, 100, "Colored Frame3D", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
MyFrame3DGadget(0, 0, 10, 10, 230, 80, "This is a Frame3D",RGB($00,$00,$FF),RGB($FF,$00,$00))
ButtonGadget(1,10,20,100,20,"Button")
CloseGadgetList()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow : Break
Case #PB_Event_Gadget : If EventGadget()=1 : MessageRequester("Info","Button pressed") : EndIf
EndSelect
ForEver
Re: Gadget Frame3D
Bonjour a tous
J'ai déja posé le problème sur ce forum, sans résultat. Pourtant en VB6 il existe un gadget de ce type ou les couleurs du trait, du titre, du fond sont modifiables a loisir.
Si vous avez des idées, je suis preneur.
J'ai déja posé le problème sur ce forum, sans résultat. Pourtant en VB6 il existe un gadget de ce type ou les couleurs du trait, du titre, du fond sont modifiables a loisir.
Si vous avez des idées, je suis preneur.

Re: Gadget Frame3D
Merci à tous pour vos réponses.
Je souhaite modifier la couleur du gadget déjà fourni avec PB (donc sans frabriquer quoi que ce soit) et si MLD sait que VB6 peut modifier la couleur du trait, du texte et du fond du gadget, il n'y a pas de raison qu'on ne puisse pas faire pareil en PB.
Mais je pense que graph100 a raison de dire qu'avec les Send_Message(...) on pourrait faire quelque chose. Mais faudrait-il savoir quoi mettre dans le Send_Message(...).
La SDK documentation des APIs est en anglais et c'est pour moi difficile de progresser étant donné que je ne suis pas très doué en langue.
Il doit y avoir des gens qui connaissent très bien les APIs et je pense qu'ils ont la solution à notre problème.
Le gadget Frame3D n'étant qu'un gadget de décoration (et c'est bien sympathique tout de même), on doit, je pense, pouvoir changer les couleurs.
Merci à ceux qui savent de nous éclairer de leur lanterne.
Je souhaite modifier la couleur du gadget déjà fourni avec PB (donc sans frabriquer quoi que ce soit) et si MLD sait que VB6 peut modifier la couleur du trait, du texte et du fond du gadget, il n'y a pas de raison qu'on ne puisse pas faire pareil en PB.
Mais je pense que graph100 a raison de dire qu'avec les Send_Message(...) on pourrait faire quelque chose. Mais faudrait-il savoir quoi mettre dans le Send_Message(...).
La SDK documentation des APIs est en anglais et c'est pour moi difficile de progresser étant donné que je ne suis pas très doué en langue.
Il doit y avoir des gens qui connaissent très bien les APIs et je pense qu'ils ont la solution à notre problème.
Le gadget Frame3D n'étant qu'un gadget de décoration (et c'est bien sympathique tout de même), on doit, je pense, pouvoir changer les couleurs.
Merci à ceux qui savent de nous éclairer de leur lanterne.
Re: Gadget Frame3D

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 ....
Re: Gadget Frame3D
Salut Dobro,
très bon le coup du timer, ça m'inspire
très bon le coup du timer, ça m'inspire

Re: Gadget Frame3D
Heu! ça ressemble, mais l'on dirait une certaine pub pour une société de crédit
Ou sont les coins arrondis ect.
Tous les gadgets fonctionnent'ils a l'intérieur du cadre 

Ou sont les coins arrondis ect.


Re: Gadget Frame3D
je donne ici le principe , rien n'empeche de les dessiner les coins arrondis ...MLD a écrit :Ou sont les coins arrondis ect.![]()
de plus , la fonction Frame3DGadget() n'affiche pas de coin arrondis ( du moins sur Seven )
je ne vois rien dans ce code qui empecherai le fonctionnement d'un gadget ....Tous les gadgets fonctionnent'ils a l'intérieur du cadre
donne plutot un exemple de non fonctionnement , plutot que de mettre en doute le code

lorsque tu ecris :
c'est une idée ..MLD a écrit : Si vous avez des idées, je suis preneur.
mais je vois que ça ne me concerne pas ...
finalement , j'aurai peut etre mieux fais de me taire
voici l'exemple du code clignotant avec un bouton Gadget dedans ..
histoire de montrer que ça marche aussi avec un gadget

Code : Tout sélectionner
Declare cadre_color(x,y,larg,haut, couleur_cadre.i,couleur_fond.i)
enumeration
#win
#gadget1
#gadget2
#gadget3
#gadget4
#Button
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)
ButtonGadget(#Button, 15, 140, 200, 20, "bouton qui marche" )
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
case #PB_Event_Gadget
Select EventGadget()
Case #button
MessageRequester("test bouton","ben ça tourne")
EndSelect
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
Re: Gadget Frame3D
Rappel ..
meme principe pour faire une guirlande autour d'un canva gadget .. (vous pouvez dessiner dedans )
celui-ci deviendra fond blanc lorsqu'il sera activé
meme principe pour faire une guirlande autour d'un canva gadget .. (vous pouvez dessiner dedans )
celui-ci deviendra fond blanc lorsqu'il sera activé
Code : Tout sélectionner
enumeration
#win
#cadre
#canvas
EndEnumeration
declare WindowCallback(WindowID,message,wParam,lParam)
If OpenWindow(#win, 0, 0, 600, 600, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered|#PB_Window_SizeGadget)
CanvasGadget(#canvas, 20, 20, 190, 190,#PB_Canvas_Border)
SetWindowColor(#WIN,rgb(0,0,0)) ;
; ******* grosse arnaque a Dobro ;o) ***************
StartDrawing(WindowOutput(#win))
drawingmode(#PB_2DDrawing_Outlined )
box(10,10,210,210,rgb(0,255,0)) ; cadre exterieur
FillArea(15, 15, -1,rgb(0,125,0))
drawingmode(#PB_2DDrawing_Default )
; haut
for i=2 to 204 step 6
circle(11+i,15,2,rgb(random(255),random(255),random(255)))
next i
; bas
for i=2 to 204 step 6
circle(11+i,213,2,rgb(random(255),random(255),random(255)))
next i
; gauche
for i=2 to 204 step 6
circle(15,11+i,2,rgb(random(255),random(255),random(255)))
next i
; droite
for i=2 to 204 step 6
circle(213,11+i,2,rgb(random(255),random(255),random(255)))
next i
StopDrawing()
; *********************************************
SetWindowCallback(@WindowCallback())
Repeat
Event = WaitWindowEvent(2)
If Event = #PB_Event_Gadget
if EventGadget() = #canvas
If EventType() = #PB_EventType_LeftButtonDown or (EventType() = #PB_EventType_MouseMove )
if GetGadgetAttribute(#canvas, #PB_Canvas_Buttons) and #WM_LBUTTONDown ;#PB_Canvas_LeftButton
If StartDrawing(CanvasOutput(#canvas))
x = GetGadgetAttribute(#canvas, #PB_Canvas_MouseX)
y = GetGadgetAttribute(#canvas, #PB_Canvas_MouseY)
Circle(x, y, 10, RGB(Random(255), Random(255), Random(255)))
StopDrawing()
Endif
EndIf
Endif
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
Procedure WindowCallback(WindowID,message,wParam,lParam)
; by Dobro
res=#PB_ProcessPureBasicEvents
Select message
case #WM_LBUTTONDown
Case #WM_PAINT
; ******* grosse arnaque a Dobro ;o) ***************
StartDrawing(WindowOutput(#win))
drawingmode(#PB_2DDrawing_Outlined )
box(10,10,210,210,rgb(0,255,0)) ; cadre exterieur
FillArea(15, 15, -1,rgb(0,125,0))
drawingmode(#PB_2DDrawing_Default )
; haut
for i=2 to 204 step 6
circle(11+i,15,2,rgb(random(255),random(255),random(255)))
next i
; bas
for i=2 to 204 step 6
circle(11+i,213,2,rgb(random(255),random(255),random(255)))
next i
; gauche
for i=2 to 204 step 6
circle(15,11+i,2,rgb(random(255),random(255),random(255)))
next i
; droite
for i=2 to 204 step 6
circle(213,11+i,2,rgb(random(255),random(255),random(255)))
next i
StopDrawing()
; *********************************************
delay(10)
ProcedureReturn #True
EndSelect
ProcedureReturn res ; important , laissez passer les autres evenements !!!
EndProcedure
;
;
;
; EPB
Re: Gadget Frame3D
MLD,
Le truc de Dobro c'est que tu dessines une forme sur ton FrameGadget, si tu veux des coins arrondies tu remplaces les box() par des RoundBox().
----edit----
Dobro tu peux nommer ta procédure CreateEpilepticalCanvas()
Le truc de Dobro c'est que tu dessines une forme sur ton FrameGadget, si tu veux des coins arrondies tu remplaces les box() par des RoundBox().
----edit----
Dobro tu peux nommer ta procédure CreateEpilepticalCanvas()

Dernière modification par Ar-S le jeu. 31/janv./2013 15:29, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Gadget Frame3D
Salut Ar-S
J'avais bien compris, il existe sur le Fofo Français ou US d'autres solutions , mais aucune n'est vraiment satisfaisante. Je ne sait pas comment chez MS il ont fait pour le gadget en VB6, mais personne n'a encore trouvé la solution en PB.
Mais parfois j'aime bien taquiner le Dobro.
J'avais bien compris, il existe sur le Fofo Français ou US d'autres solutions , mais aucune n'est vraiment satisfaisante. Je ne sait pas comment chez MS il ont fait pour le gadget en VB6, mais personne n'a encore trouvé la solution en PB.


Mais parfois j'aime bien taquiner le Dobro.

Re: Gadget Frame3D
Mais tu souhaites quoi plus précisément ? un skin pour gadget ? Un skin pour toute ton interface (à ce moment une image collée au fond de ta fenêtre devrait suffire) ? Est-ce pour un gadget précis ? Tu as aussi la SkinLib de LSI qui était vraiment pas mal.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels