Je me demandais juste si c'était possible de dessiner sur le fond d'une fenêtre sans effacer tous les gadgets qui y sont... J'ai fait quelques essais, mais ca flashe, et les éventuels gadgets qui sont emprisonnés sous la zone de dessin sont effacés (le dessin se fait par dessus
Dessiner sur une fenêtre
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Dessiner sur une fenêtre
J'avais envie, a l'occasion du passage de SherPlay en FMOD, de dessiner le spectre de la musique sur le fond de la fenêtre pendant la lecture.
Je me demandais juste si c'était possible de dessiner sur le fond d'une fenêtre sans effacer tous les gadgets qui y sont... J'ai fait quelques essais, mais ca flashe, et les éventuels gadgets qui sont emprisonnés sous la zone de dessin sont effacés (le dessin se fait par dessus
). Y-a t'il un moyen de forcer le dessin a se faire en dessous des gadgets..? 
Je me demandais juste si c'était possible de dessiner sur le fond d'une fenêtre sans effacer tous les gadgets qui y sont... J'ai fait quelques essais, mais ca flashe, et les éventuels gadgets qui sont emprisonnés sous la zone de dessin sont effacés (le dessin se fait par dessus
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Re: Dessiner sur une fenêtre
donne un peu de code, qu'on vois comment tu t'y prends 
là comme ça , c'est difficile de deviner ce que tu veux
là comme ça , c'est difficile de deviner ce que tu veux
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: Dessiner sur une fenêtre
Petit exemple fait a l'arrache...
Je me demandais s'il était possible que le cercle rouge (dans le cas de cet exemple) se dessine sous le bouton et non par dessus ?
Merci d'avance.
Code : Tout sélectionner
x=20
;Quant on clique sur le bouton ou que l'on ne fait rien, le crecle rouge se dessie dessus le bouton et non en dessous...
OpenWindow(0,0,0,240,240,"Exemple de dessin sur la fenêtre",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(0,10,10,200,200,"Gros bouton qui va être effacé par le dessin...")
Repeat
event=WaitWindowEvent(10)
StartDrawing(WindowOutput(0))
Circle(x,120,20,RGB(255,0,0))
StopDrawing()
x=x+1
If x > 240-20
x=20
EndIf
Until event=#PB_Event_CloseWindow
Merci d'avance.
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Re: Dessiner sur une fenêtre
en fait le principe est assez simple 
on est des programmeurs ?
bon programmons !
le but: ne pas dessiner sur le bouton ??? , et bien , une jolie condition , et voila :
note que la condition isole le bouton , donc marche aussi avec ton cercle qui defile ...
si tu avait plusieurs gadget, le principe est le meme , tu isoles chaque gadget par une condition..
c'est un peut complexe a coder, mais apres t'es tranquilles
remarque aussi que le fait d'avoir utilisé les fonction Gadgetx , GagdetWith() etc ... permet de modifier
la position ou la taille du gadget sans modifier la ligne concernant la condition
on pourrai en faire une procedure du coup
[reedit] code modifié dans ce sens 
là on est pas dans l'ecran, donc faut tout gerer ..
exemple modifié pour montrer avec 2 boutons
on est des programmeurs ?
bon programmons !
le but: ne pas dessiner sur le bouton ??? , et bien , une jolie condition , et voila :
note que la condition isole le bouton , donc marche aussi avec ton cercle qui defile ...
si tu avait plusieurs gadget, le principe est le meme , tu isoles chaque gadget par une condition..
c'est un peut complexe a coder, mais apres t'es tranquilles
remarque aussi que le fait d'avoir utilisé les fonction Gadgetx , GagdetWith() etc ... permet de modifier
la position ou la taille du gadget sans modifier la ligne concernant la condition
on pourrai en faire une procedure du coup
là on est pas dans l'ecran, donc faut tout gerer ..
exemple modifié pour montrer avec 2 boutons
Code : Tout sélectionner
;***********************************************
;Titre :*evite_gadget
;Auteur : Zorro
;Date :19/06/2016
;Heure :09:51:12
;Version Purebasic : PureBasic 5.42 LTS (Windows - x86)
;Version de l'editeur :EPB V2.62
; Libairies necessaire : Aucune
;***********************************************
enumeration
#win
#bouton
#bouton2
EndEnumeration
Declare Evite_gadget(num_gadget,x,y,taux)
InitSprite()
;Quant on clique sur le bouton ou que l'on ne fait rien, le crecle rouge se dessie dessus le bouton et non en dessous...
OpenWindow(#win,0,0,240,240,"Exemple de dessin sur la fenêtre",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(#bouton,50,50,150,30," bouton 1")
ButtonGadget(#bouton2,10,150,150,30," bouton 2" )
Repeat
event=WaitWindowEvent(2)
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case #bouton
Debug "bouton1 clické"
Case #bouton2
Debug "bouton2 clické"
EndSelect
Case #PB_Event_CloseWindow
end
EndSelect
color=rgb(random(255,50),random(255,50),random(255,50)) : xs=random(240,0) : ys=random(240,0)
if Evite_gadget(#bouton,xs,ys,8)=#true and Evite_gadget(#bouton2,xs,ys,8)
StartDrawing(windowOutput(#win))
Circle(xs,ys,10,color)
StopDrawing()
Endif
ForEver
Procedure Evite_gadget(num_gadget,x,y,taux)
; By Dobro
; renvoi True si les coordonées entrée sont en dehors de la position du gadget
;num_gadget = numero du gadget a surveiller
;x,y = coordonées entrées ,on teste si elle sont dans la zone du gadget, si oui renvoi #False
;taux = petite marge avant ou apres le gadget pour eloigner le dessins des bords du gadget
if (x<gadgetx(num_gadget)-taux or x>gadgetx(num_gadget)+GadgetWidth(num_gadget)+taux) or (y<gadgetY(num_gadget)-taux or y>gadgetY(num_gadget)+GadgetHeight(num_gadget)+taux) ; on protege le bouton
ProcedureReturn #True
Else
ProcedureReturn #false
Endif
EndProcedure
; Epb
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: Dessiner sur une fenêtre
Merci Zorro!!
Et bien la seule chose a redire c'est que ca marche
!
Me reste plus qu'a adapter ca dans SherPlay quand j'aurais le temps, ca promet de bien me faire c**** euh de me rendre la vie dure, vu que Sherplay n'est qu'un amoncellement de gadgets en tout genres y compris des canvas ou il faut dessiner et d'autres ou il ne faut pas... Mais bon j'y arriverais, avec un peu de courage et beaucoup de détermination on peut faire n'importe quoi aprés tout (tiens ca ferait une belle signature ca...
)...
N'empêche les solutions simples je les voit jamais... Ouiiin

Et bien la seule chose a redire c'est que ca marche
Me reste plus qu'a adapter ca dans SherPlay quand j'aurais le temps, ca promet de bien me faire c**** euh de me rendre la vie dure, vu que Sherplay n'est qu'un amoncellement de gadgets en tout genres y compris des canvas ou il faut dessiner et d'autres ou il ne faut pas... Mais bon j'y arriverais, avec un peu de courage et beaucoup de détermination on peut faire n'importe quoi aprés tout (tiens ca ferait une belle signature ca...
N'empêche les solutions simples je les voit jamais... Ouiiin
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Re: Dessiner sur une fenêtre
alors que moi c'est total inverse !!JohnJohnsonSHERMAN a écrit :N'empêche les solutions simples je les voit jamais... Ouiiin![]()
je suis incapable de resoudre des problemes complexe, sans simplifier au max
etant partisant du moindre effort,ma paresse naturelle me pousse a rechercher le plus directe
au point de souvent "bidouiller"
j'ose meme souvent des trucs que d'auqu'un ne penserai pas , par "culture" ou "savoir"
comme la phrase des papillotes de noel , "tout le monde disaient que c'etait impossible, il est venu un imbécile qui ne le savait pas.... il l'a fait !"
le contre point de ceci , c'est que si le probleme ne se resouds pas avec une bidouille , je suis dans la galere
au secours, le forum anglais, les tronches de l'algorythme , je suis largué !
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: Dessiner sur une fenêtre
Le probléme tu vois c'est qu'il y a deux types de programmeurs : ceux qui sont flemmards et qui trouvent des solutions simples aux problémes compliqués
, et les génies de l'octet qui trouvent des solutions compliquées aux problémes simples
... J'appartiens a la troisiéme catégorie
... ... ceux qui ne pensent pas aux trucs simples et n'ont pas les connaissances pour les trucs compliqués

"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Re: Dessiner sur une fenêtre
Les jeunes programmeurs (arrivés sur le « marché » avec l'Internet) ont une fâcheuse tendance à faire du copié/collé à tout bout de champs sans (parfois|souvent) chercher à savoir comment ça marche
Les vieux (et nous sommes nombreux sur ce forum) qui ont commencé l'informatique perso en tapant des codes lignes par ligne depuis des mensuels cherchent avant tout à savoir si dans ce qu'il tapent, tout est véritablement utile. C'était long de taper et chaque faute de frappe se paye (sans oublier les fautes d'imprimerie, où il fallait attendre la correction le mois suivant
si on n'avait pas trouvé tout seul)
Je me souviens avoir porté une fois un bloc de code pour écrire des sommes de chiffres en lettres. S'agissant d'une application destinée à être utilisée en france, j'ai supprimé les septantes, les nonantes et les séparateurs de milliers et un tas d'autres trucs, réduisant ainsi la lib des deux tiers.
Après, le plus dur est de se rappeler où on a mis ce super algo simplifié qu'on a mis au point et même comment on a appelé ce fichier qu'on a gardé précieusement
Les vieux (et nous sommes nombreux sur ce forum) qui ont commencé l'informatique perso en tapant des codes lignes par ligne depuis des mensuels cherchent avant tout à savoir si dans ce qu'il tapent, tout est véritablement utile. C'était long de taper et chaque faute de frappe se paye (sans oublier les fautes d'imprimerie, où il fallait attendre la correction le mois suivant
Je me souviens avoir porté une fois un bloc de code pour écrire des sommes de chiffres en lettres. S'agissant d'une application destinée à être utilisée en france, j'ai supprimé les septantes, les nonantes et les séparateurs de milliers et un tas d'autres trucs, réduisant ainsi la lib des deux tiers.
Après, le plus dur est de se rappeler où on a mis ce super algo simplifié qu'on a mis au point et même comment on a appelé ce fichier qu'on a gardé précieusement
Re: Dessiner sur une fenêtre
Marc56 a écrit : Je me souviens avoir porté une fois un bloc de code pour écrire des sommes de chiffres en lettres. S'agissant d'une application destinée à être utilisée en france, j'ai supprimé les septantes, les nonantes et les séparateurs de milliers et un tas d'autres trucs, réduisant ainsi la lib des deux tiers.
Après, le plus dur est de se rappeler où on a mis ce super algo simplifié qu'on a mis au point et même comment on a appelé ce fichier qu'on a gardé précieusement
ben t'as qu'a demander , je vais te le retrouver
http://www.purebasic.fr/french/viewtopic.php?f=1&t=8136
Re: Dessiner sur une fenêtre
Ce n'est pas celui-là.
Celui dont je suis parti était écrit initialement en VB, je l'ai porté successivement en fonction des utilisations, en VBA puis Perl, puis PB.
C'était un truc qui pouvait paraitre archaïque au premier abord, car il mettait les premiers nombres sous forme de tableaux. Mais ensuite, il gérait les quelques exceptions en une poignée de lignes (les ET par exemple)
Celui dont je suis parti était écrit initialement en VB, je l'ai porté successivement en fonction des utilisations, en VBA puis Perl, puis PB.
C'était un truc qui pouvait paraitre archaïque au premier abord, car il mettait les premiers nombres sous forme de tableaux. Mais ensuite, il gérait les quelques exceptions en une poignée de lignes (les ET par exemple)
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: Dessiner sur une fenêtre
Petite correction Marc : ce n'est pas parcequ'on est jeune qu'on ne cherche pas a comprendre, et heureusement car sinon l'avenir de l'humanité serait sérieusement compromisLes jeunes programmeurs (arrivés sur le « marché » avec l'Internet) ont une fâcheuse tendance à faire du copié/collé à tout bout de champs sans (parfois|souvent) chercher à savoir comment ça marche![]()
Bon faut dire aussi que quand le travail a déjà été fait, pourquoi se priver???
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Re: Dessiner sur une fenêtre
Bonjour,
Jolie discussion sur le plaisir d'apprendre, l'intérêt du partage des connaissances.
Quand je copie/colle du code, c'est pour des raisons pratiques mais une fois compris, je le re fabrique selon mon besoin, touche par touche dans mon code.
Surtout à chaque fois je pense au temps qu'ont passé les autres à le fabriquer.
Rien ne vient comme ça.
C'est la magie de la Programmation, un clavier et tout un monde s'ouvre.
Un nouveau ici, François, nous dit avoir commencé avec le ZX80, moi je n'ai pas osé le préciser, car je me suis dit que personne ne connaissait encore ce petit premier ordinateur à 1000frs de l'époque. Une pup d'un quart de page dans Electronique Pratique.
J'ai passé une nuit à appréhender l'Assembleur Z80, je me souvient de LD ADD SUB PUSH POP SRL NOP AND OR XOR...
J'ai toujours ce petit bouquin que je garde comme une relique d'un code ésotérique de la préhistoire de la micro informatique.
Je ne serais jamais un Programmeur efficace, trop bordélique, trop dispersé...
Pour les gamins en mal d'occupation, une seule réponse: le foot. A coté, combien de "club informatique", ou de découverte simplement ?
Bon je suis hors sujet, toutes mes excuses.
JM
Jolie discussion sur le plaisir d'apprendre, l'intérêt du partage des connaissances.
Quand je copie/colle du code, c'est pour des raisons pratiques mais une fois compris, je le re fabrique selon mon besoin, touche par touche dans mon code.
Surtout à chaque fois je pense au temps qu'ont passé les autres à le fabriquer.
Rien ne vient comme ça.
C'est la magie de la Programmation, un clavier et tout un monde s'ouvre.
Un nouveau ici, François, nous dit avoir commencé avec le ZX80, moi je n'ai pas osé le préciser, car je me suis dit que personne ne connaissait encore ce petit premier ordinateur à 1000frs de l'époque. Une pup d'un quart de page dans Electronique Pratique.
J'ai passé une nuit à appréhender l'Assembleur Z80, je me souvient de LD ADD SUB PUSH POP SRL NOP AND OR XOR...
J'ai toujours ce petit bouquin que je garde comme une relique d'un code ésotérique de la préhistoire de la micro informatique.
Je ne serais jamais un Programmeur efficace, trop bordélique, trop dispersé...
Pour les gamins en mal d'occupation, une seule réponse: le foot. A coté, combien de "club informatique", ou de découverte simplement ?
Bon je suis hors sujet, toutes mes excuses.
JM
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: Dessiner sur une fenêtre
Tu n'est pas hors sujet si on considére la dérive autour du sujet initial
Et je suis tout a fait d'accord avec toi... Pour ma part, j'ai découvert la programmation il y a quelques années, en Seconde au lycée, sur les calculettes programmables de chez casio... Quelques instructions en Basic, et c'est parti! Je me rapelle d'avoir bidouillé la calto et tout appris tout seul sans jamais consulter le manuel fourni avec!!
Depuis et bien c'est un monde qui s'ouvre sans cesse au fur et a mesure de mes apprentissages... un monde ou c'est le programmeur qui a le pouvoir sur la machine, et ca c'est a mon sens une des grandes raisons qui nous pousse a s'arracher les cheveux sur des codes plutot que de chercher des versions déja faites ailleurs... Quelque part c'est la fierté de se dire "c'est moi qui l'ait fait!"... Bref voila mon avis 
Et je suis tout a fait d'accord avec toi... Pour ma part, j'ai découvert la programmation il y a quelques années, en Seconde au lycée, sur les calculettes programmables de chez casio... Quelques instructions en Basic, et c'est parti! Je me rapelle d'avoir bidouillé la calto et tout appris tout seul sans jamais consulter le manuel fourni avec!!
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé