Page 1 sur 1

[OK] Je bug sur mon canvas

Publié : mar. 02/févr./2016 21:59
par Ar-S
Bonsoir..

Dans mon minuteur j'ai 3 canvas...
- un pour la minuterie et le volume
- un pour garder ou non la fenêtre au 1er plan
- un pour un bouton Play (#BT_PLAYSOUND) (triangle graphique) pour jouer le son et du coup pouvoir régler le volume de son coucou

Je n'ai aucun soucis pour les 2 1ers canvas mais pour le triangle (entre le bouton stop et tremblotte) il n'apparait pas au lancement du soft mais uniquement si je passe la souris dessus (le bindgadgetevent fonctionne bien pourtant)

C'est peut-être une erreur d'attention mais je ne vois pas ou je me suis trompé.
Merci pour vos lumières

Voilà le code restreint à l'essentiel.

Code : Tout sélectionner

; Minuteur par Ar-S / Dec 2015
; 04 - BindEvent
; 05 : Bouge fenêtre
; 06 Sticky / ico / position Fen
; 07 Zapp screensaver
; 08 Volume // Fev 2015

Enumeration
  #LDVM
  #BT_START
  #BT_STOP
  #BT_SOURIS
  #BT_PLAN
  #BT_PLAYSOUND
  #Lmin
  #Lsec
  #AFFICHE
  #Font
  #T
  #COUCOU
  #VOL
  #P1
  #P2
  #IP1
  #IP2
EndEnumeration

UsePNGImageDecoder()
InitSound()
UseOGGSoundDecoder()

Global Image_Play1 = CatchImage (#IP1,?pl1,?pl1e-?pl1)
Global Image_Play2 = CatchImage (#IP2,?pl2,?pl2e-?pl2)



Procedure JoueSon()
   
  StartDrawing(CanvasOutput(#BT_PLAYSOUND))

   Select EventType()
       
         
      Case #PB_EventType_LeftButtonDown   
         DrawImage(Image_Play2,0,0)
         
      Case #PB_EventType_LeftButtonUp    
         DrawImage(Image_Play1,0,0)
         
      Case #PB_EventType_MouseEnter
         SetGadgetAttribute(#BT_PLAYSOUND,#PB_Canvas_Cursor,#PB_Cursor_Hand)
         
      Case #PB_EventType_MouseLeave
         SetGadgetAttribute(#BT_PLAYSOUND,#PB_Canvas_Cursor,#PB_Cursor_Default)
         
      Case #PB_EventType_LeftClick
         Debug "A que coucou !"
   EndSelect
   StopDrawing()
   

EndProcedure


If OpenWindow(#LDVM, 0, 0, 220, 121, "Minuteur/ldvmultimedia.com", #PB_Window_Invisible | #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  WinX = WindowX(#LDVM)
  WinY = WindowY(#LDVM)
  
  CanvasGadget (#BT_PLAYSOUND,102,90,18,30)

  ButtonGadget  (#BT_Stop, 22, 90, 78, 30, "STOP")
  ButtonGadget  (#BT_SOURIS, 119, 90, 100, 30, "TREMBLOTE OFF")
  CanvasGadget  (#VOL,102,90,18,30)
 
  ; ICI MON IMAGE NE S'AFFICHE PAS A L'OUVERTURE DE LA FENÊTRE ! 
  StartDrawing(CanvasOutput(#BT_PLAYSOUND))
  ; dessin playsound
  DrawImage(Image_Play1,0,0)
  StopDrawing()
  
  
  BindGadgetEvent(#BT_PLAYSOUND, @joueson())
  
  
  ;Tout est chargé, on affiche la fenêtre
  HideWindow(#LDVM,0)
  
   
  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow

EndIf

DataSection
  pl1:
  Data.q $0A1A0A0D474E5089,$524448490D000000,$1E00000012000000,$BED2160000000308,$584574190000001E,$72617774666F5374,$2065626F64410065,$6165526567616D49
    Data.q $00003C65C9717964,$4D58745854692603,$64612E6D6F633A4C,$00706D782E65626F,$70783F3C00000000,$65622074656B6361,$BFBBEF223D6E6967,$3557223D64692022
    Data.q $69686543704D304D,$544E7A5365727A48,$3F226439636B7A63,$706D783A783C203E,$6C6D78206174656D,$6461223D783A736E,$6D3A736E3A65626F,$3A7820222F617465
    Data.q $41223D6B74706D78,$504D582065626F64,$2E352065726F4320,$3720343130632D35,$3138343135312E39,$302F33313032202C,$3A32312D33312F33,$20202035313A3930
    Data.q $203E222020202020,$4644523A6664723C,$723A736E6C6D7820,$70747468223D6664,$772E7777772F2F3A,$39312F67726F2E33,$32322F32302F3939,$6E79732D6664722D
    Data.q $2223736E2D786174,$443A6664723C203E,$6974706972637365,$613A666472206E6F,$2022223D74756F62,$6D783A736E6C6D78,$747468223D4D4D70,$612E736E2F2F3A70
    Data.q $6D6F632E65626F64,$302E312F7061782F,$6D7820222F6D6D2F,$655274733A736E6C,$3A70747468223D66,$6F64612E736E2F2F,$782F6D6F632E6562,$732F302E312F7061
    Data.q $7365522F65707954,$666552656372756F,$736E6C6D78202223,$7468223D706D783A,$2E736E2F2F3A7074,$6F632E65626F6461,$2E312F7061782F6D,$4D706D7820222F30
    Data.q $656D75636F443A4D,$6D78223D4449746E,$33453A6469642E70,$3943333535463246,$3739354531314345,$4234443139433830,$2022453131454438,$6E493A4D4D706D78
    Data.q $444965636E617473,$69692E706D78223D,$3546324633453A64,$3131434539433235,$3943383037393545,$3145443842344431,$3A706D7820224531,$54726F7461657243
    Data.q $6F6441223D6C6F6F,$6F746F6850206562,$20434320706F6873,$6957282034313032,$3E222973776F646E,$3A4D4D706D783C20,$4664657669726544,$65527473206D6F72
    Data.q $6E6174736E693A66,$6D78223D44496563,$30413A6469692E70,$3843363846373537,$4241354531314546,$3443383739383737,$2022304343433931,$6F643A6665527473
    Data.q $4449746E656D7563,$69642E706D78223D,$4637353730413A64,$3131454638433738,$3938373742413545,$4343393134433837,$2F3C203E2F223043,$637365443A666472
    Data.q $3E6E6F6974706972,$523A6664722F3C20,$3A782F3C203E4644,$3E6174656D706D78,$6B636170783F3C20,$223D646E65207465,$6C2AEBBD3E3F2272,$45544C50B4000000
    Data.q $133C041B4EFFFFFF,$52054CEE75829E01,$032980ACB4C5041C,$45D8043DBF042672,$952D69F12A67F105,$9CB8F80549E50430,$B3C40C51EE3770F1,$F8B5BCCB074DEEAB
    Data.q $042776032A83F5F6,$2982053BB6032981,$5F0546DC0548E103,$032D8E043EC3031F,$36A8041C51043196,$3F043096021A5204,$032D8A497CF30114,$8CF404339E0545D9
    Data.q $550423690442D15E,$0549E60426710E24,$8EF40549E4041C53,$D10F53EF4E5E8261,$A2BCF9042673BEC4,$39B3032C8945567C,$32BDFBB00437AB04,$5441444993000000
    Data.q $40C20EC7D1B4DA78,$4A1684377B50040C,$FFFFF97BDEF43DE8,$3E39888E4CC27BC2,$312E53F4434B2C8D,$78D16DA9B48B6BB1,$D8C064E9B1814AB4,$3630051E6C60B33C
    Data.q $C84C19649B18228D,$69B7624D5ABF3673,$43C7979DE4D15EBB,$5EC5BD760C29A4F3,$EA4A27EE9F20C2B7,$39225A8447F19396,$17FBEBFF13914225,$A10332788410D088
    Data.q $A3DB1F81FC85177B,$570001805BCA7F4A,$0038456AE5B50990,$AE444E4549000000
    Data.b $42,$60,$82
  pl1e:
  
  pl2:
  Data.q $0A1A0A0D474E5089,$524448490D000000,$1E00000012000000,$BED2160000000308,$584574190000001E,$72617774666F5374,$2065626F64410065,$6165526567616D49
    Data.q $00003C65C9717964,$4D58745854692603,$64612E6D6F633A4C,$00706D782E65626F,$70783F3C00000000,$65622074656B6361,$BFBBEF223D6E6967,$3557223D64692022
    Data.q $69686543704D304D,$544E7A5365727A48,$3F226439636B7A63,$706D783A783C203E,$6C6D78206174656D,$6461223D783A736E,$6D3A736E3A65626F,$3A7820222F617465
    Data.q $41223D6B74706D78,$504D582065626F64,$2E352065726F4320,$3720343130632D35,$3138343135312E39,$302F33313032202C,$3A32312D33312F33,$20202035313A3930
    Data.q $203E222020202020,$4644523A6664723C,$723A736E6C6D7820,$70747468223D6664,$772E7777772F2F3A,$39312F67726F2E33,$32322F32302F3939,$6E79732D6664722D
    Data.q $2223736E2D786174,$443A6664723C203E,$6974706972637365,$613A666472206E6F,$2022223D74756F62,$6D783A736E6C6D78,$747468223D4D4D70,$612E736E2F2F3A70
    Data.q $6D6F632E65626F64,$302E312F7061782F,$6D7820222F6D6D2F,$655274733A736E6C,$3A70747468223D66,$6F64612E736E2F2F,$782F6D6F632E6562,$732F302E312F7061
    Data.q $7365522F65707954,$666552656372756F,$736E6C6D78202223,$7468223D706D783A,$2E736E2F2F3A7074,$6F632E65626F6461,$2E312F7061782F6D,$4D706D7820222F30
    Data.q $656D75636F443A4D,$6D78223D4449746E,$42443A6469642E70,$3943433244383439,$3241354531314345,$3944383633414241,$2022424146323039,$6E493A4D4D706D78
    Data.q $444965636E617473,$69692E706D78223D,$4438343942443A64,$3131434539434232,$3341424132413545,$4632303939443836,$3A706D7820224241,$54726F7461657243
    Data.q $6F6441223D6C6F6F,$6F746F6850206562,$20434320706F6873,$6957282034313032,$3E222973776F646E,$3A4D4D706D783C20,$4664657669726544,$65527473206D6F72
    Data.q $6E6174736E693A66,$6D78223D44496563,$35393A6469692E70,$3843374531373543,$3738354531314546,$4337464234443030,$2022393135444541,$6F643A6665527473
    Data.q $4449746E656D7563,$69642E706D78223D,$3137354335393A64,$3131454638433845,$3444303037383545,$3544454143374642,$2F3C203E2F223931,$637365443A666472
    Data.q $3E6E6F6974706972,$523A6664722F3C20,$3A782F3C203E4644,$3E6174656D706D78,$6B636170783F3C20,$223D646E65207465,$8DAAA2143E3F2272,$45544C50D5000000
    Data.q $829E041B4EFFFFFF,$C50316410436AA75,$010C27000A1EACB4,$17480549E50549E4,$EE02236C031B5302,$054CED032A81054C,$48E0ABB3C4043DBF,$47B5BCCB0436A805
    Data.q $F5F6F80111340217,$24550437AD0545D8,$4F02216803277A0E,$0434A30438B0041B,$44D50436A901133B,$30032E9003184604,$021E5F4E5E82010F,$2B87043DBE010D26
    Data.q $40031B520437AB03,$041A4C00091B0316,$0E290436A745567C,$E703174200081902,$011033011032054A,$1C52BEC4D1010C26,$250546DB03206404,$032D8A032C89010C
    Data.q $4CEC02143E043AB7,$52041B4D0549E305,$CC3C5303297F021A,$4144499E00000099,$C20EC7D1B4DA7854,$02C0213B50040C40,$DEF7BDEF7A102421,$23932C4E5893FFFF
    Data.q $7E8992D8D64F8E62,$36CA434D5A23C6CA,$B2F8C0FB5CBC68E6,$E3E30011EB7183F2,$2B8C1473A5C60433,$7AC60137EB1818FB,$87C483861EE692D0,$A9BB59C972744B4C
    Data.q $D7D1D3CB774D7990,$72ED5B77BBC93394,$252146CADB3E91E2,$BD4316F16F7108AC,$6441D62E2105533E,$190802A7C6840ED7,$2F29FD148FF3C35B,$37340CDB4F000601
    Data.q $4900000000114F6A
    Data.b $45,$4E,$44,$AE,$42,$60,$82
  pl2e:
EndDataSection



Re: Je bug sur mon canvas

Publié : mar. 02/févr./2016 23:16
par Ar-S
Effectivement c'est un truc de fou,
Mais le plus fou c'est que si je le place en dernier, le bindevent ne fonctionne plus...
Je suis en 5.41, j'ai testé en 5.31 même combat.
ça sent le bug ou bien ?

Re: Je bug sur mon canvas

Publié : mar. 02/févr./2016 23:43
par nico
Je ne suis pas spécialiste du Canvas, mais si tu dessines dessus, il faut le redessiner à chaque fois que le Canvas ou la fenêtre se rafraîchit; donc si tu dessines dessus alors que la fenêtre est invisible (inutile sauf si tu sauvegardes le dessin), au moment où elle apparaît le dessin n'existe plus car il faut le redessiner.

Le dessin sur le Canvas n'est pas persistant, si tu déplaces ta fenêtre vers le bas de l'écran alors que le dessin apparaît, lorsque tu remontes ta fenêtre, le dessin a disparu car il n'a pas été redessiné.

Re: Je bug sur mon canvas

Publié : mar. 02/févr./2016 23:49
par nico
Le contenu reste persistant jusqu'à ce qu'il soit effacé par une opération de dessin.
Bon ben y a un problème, le Canvas réagit comme si il ne l'était pas.

Re: Je bug sur mon canvas

Publié : mer. 03/févr./2016 0:49
par falsam
Pour moi pas de bug. Tu affiches #BT_PLAYSOUND puis #VOL dans des points de coordonnées identiques.

#VOL (sans dessin) venant par dessus #BT_PLAYSOUND, il est normal que tu ne vois pas #BT_PLAYSOUND.

Par contre si tu passes la souris sur dans ces points de coordonnées, alors #BT_PLAYSOUND est visible car un événement est survenu : Celui du survol.

Commente BindGadgetEvent(#BT_PLAYSOUND, @joueson()) et #BT_PLAYSOUND ne sera pas visible.

Je pense que c'est valable pour n'importe quel gadget superposé par un autre.
Ar-S a écrit :C'est peut-être une erreur d'attention
je pense que oui. Il faut que tu caches l'un des deux canvas et et vice versa selon tes besoins.

Re: Je bug sur mon canvas

Publié : mer. 03/févr./2016 0:56
par Demivec
Pourquoi avez-vous deux toile sur le dessus de l'autre ?

IMHO Un autre conseil:

Utiliser SetGadgetAttribute(#BT_PLAYSOUND, #PB_Canvas_Image, ImageID(#IP1)) à la place de StartDrawing()/StopDrawing().
Documentation PureBasic a écrit : - #PB_Canvas_Image: Applique l'ImageID au CanvasGadget.
Le gadget fait une copie de l'image d'entrée afin qu'elle puisse être
libérée ou réutilisée après cet appel.
Utiliser cet attribut revient à utiliser StartDrawing(),
CanvasOutput() et DrawImage() pour dessiner l'image sur le CanvasGadget.

Re: Je bug sur mon canvas

Publié : mer. 03/févr./2016 5:44
par Ar-S
Ahhhh ! Merci aux yeux de Falsma qui m'ont permis de voir ce salle residu de #vol qui était en trop (je voulais faire un gadget séparé pour le volume au debut). Et j'ai découvert ce SetGadgetAttribute(#BT_PLAYSOUND, #PB_Canvas_Image, ImageID(#IP1)) aussi qui va soulager le soft de quelques start/stop drawing.

Merci à tous !

Re: [OK] Je bug sur mon canvas

Publié : mer. 03/févr./2016 12:15
par Ar-S
Et moi donc.. J'ai repris mon code en long en large et en travers (surtout de travers du coup :mrgreen: )