Transparence PNG dans fenêtre windows

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Transparence PNG dans fenêtre windows

Message par Atomo »

Salut,
Je rencontre un problème avec les images PNG, je souhaiterai en afficher une dans une fenêtre en prenant en compte sa transparence.

J'utilise ce code mais en vain :

Code : Tout sélectionner

UsePNGImageDecoder()

LoadImage(1, "image.png")

If OpenWindow(0, 0, 0, 200, 200, "PNG", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  If StartDrawing(WindowOutput(0))
    DrawAlphaImage(ImageID(1),0,0)
    StopDrawing()
  EndIf
EndIf

Repeat
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End
Image PNG :
Image

Quelqu'un aurait la solution s'il vous plaît ?
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

L'image doit avoir un alpha channel (32BPP).

Code : Tout sélectionner

DataSection
  Image:
  Data.l $474E5089,$0A1A0A0D,$0D000000,$52444849,$20000000,$20000000,$00000608,$7A7A7300,$020000F4,$414449BC,$CD855854,$E372A196
  Data.l $4F451430,$0A181676,$0A060A0A,$161A161A,$2E160616,$161427EC,$27CC0C2E,$0A1A0618,$0A0A1A1A,$2A81798A,$3B65B645,$F6774ED9
  Data.l $B62664CE,$A4F3DD1C,$37C317AB,$BE8C37CB,$F7BB5C61,$0001BBE3,$68D30538,$F436E9CE,$CE00006F,$EDD3F999,$F0EFCFF6,$52792F9A
  Data.l $25FEBF34,$A6DCF340,$8B35AD89,$1DBDD371,$4396AA00,$F7C9DAA9,$311E1D4F,$18B92AAE,$2026DEF3,$61F7C367,$B64038F8,$08107312
  Data.l $59DE70AB,$E52C6881,$9CE63171,$430D4223,$A396B38B,$78E4226E,$3682B979,$67D1A318,$9860E703,$4006C39B,$528EDCF3,$A2D6391E
  Data.l $0177DE38,$B38B7BC2,$109F5D16,$2AF2F042,$5C957B79,$2E68075A,$0282E3AD,$843AFDE0,$6D873895,$F5D0055A,$325558FB,$F15D6B99
  Data.l $B5C22D94,$1DF41007,$F326D318,$73D22D63,$DA15EAD7,$987C00DF,$CCE26421,$5D000B42,$6A528FBF,$039B2884,$2015D79F,$732756B0
  Data.l $3DAE2BAD,$0C30D528,$035B172D,$563D6520,$82E425ED,$F62909E9,$C97D5881,$14110A7C,$63C6359F,$146EA78C,$A548354A,$D3B77397
  Data.l $94004FE0,$B94A35FA,$B49AD1FC,$30C9D2AE,$77D003C6,$0873BE8E,$41AA5021,$1DAC27D7,$9E553A80,$13B97C43,$DAE8210A,$08439921
  Data.l $A9680C67,$05DAE45F,$DF2B8108,$6F7B558F,$9E3C4413,$8B59DCD1,$D5290A94,$2F948036,$9DF47093,$8873064B,$05EC75F9,$6F78F6D6
  Data.l $D553E627,$3C5D168B,$89BBA186,$A5BD25CF,$9E31973B,$62A973BE,$34C4F529,$F752C876,$D6B004DC,$B9C6A520,$2A10A410,$EE290D26
  Data.l $403814F5,$3773D840,$805EFE2F,$48E7527C,$0A6E60FD,$8AFEFDB7,$51C20652,$C96F6701,$616E100D,$D58BDF94,$13B63987,$573009BF
  Data.l $E69B910E,$04F9B9C6,$DADF0B30,$61804533,$E41326E8,$1ACFF310,$32CAA3F0,$C74A1DD0,$EA5C4E24,$B5D32590,$7716C3EA,$458FF78B
  Data.l $54B7BD08,$8B59C495,$B423B790,$CCFCE157,$2AFD2DEF,$501D2040,$E6934EAA,$8FC67B20,$95F14398,$0B7CFEAC,$A44DBB52,$063E72A4
  Data.l $1B0FCB4A,$81DAC07D,$203DF858,$6B9D548F,$16F4A5E5,$913FB5C6,$FD55B57B,$20D7C006,$5A0B5362,$9801DF37,$3203DC42,$BF37DE35
  Data.l $B20CA003,$07E37DAF,$B905EE01,$D1BFF8DF,$B1253D1F,$2DA35278,$00000055,$4E454900,$6042AE44
  Data.b $82
EndDataSection

UsePNGImageDecoder()

If OpenWindow(0, 0, 0, 200, 200, "", #PB_Window_ScreenCentered|#PB_Window_SystemMenu) 
  If StartDrawing(WindowOutput(0)) 
      DrawAlphaImage(CatchImage(1, ?Image),0,0) 
    StopDrawing() 
  EndIf 
EndIf 

Repeat 
  Event = WaitWindowEvent() 
Until Event = #PB_Event_CloseWindow 
End
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Message par Atomo »

Merci pour ta réponse.
Je récupère ces images d'un site qui les affiche bien avec leurs transparence pourtant.
Comment définir l'alpha channel ? avec photoshop ou bien c'est faisable directement avec purebasic ?
Mon programme télécharge les images directement sur un site puis les affiche dans une fenêtre, je ne peux donc pas modifier chaque image manuellement :cry:

Merci de bien vouloir m'aider.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Il y a un post sur le site anglais : la fleur de NetMaestro. Le code est un peu plus bas.

C'est assez compliqué mais le résultat est là, car je ne pense pas qu'on puisse modifier le canal alpha si facilement pour l'instant.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Bizarre j'ai essayé la source qu'il propose et elle me fait apparaitre la fenêtre mais pas d'images, pourtant je l'ai ai bien récupéré.
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Message par Atomo »

J'ai testé le code de Maestro et il m'affiche une fenêtre sans image aussi.
Bizarre j'ai essayé la source qu'il propose et elle me fait apparaitre la fenêtre mais pas d'images, pourtant je l'ai ai bien récupéré.
Justement le problème est là :(
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Euh... Les gars... Il y a un curseur ! L'alpha est réglable en temps réel selon la position du curseur :D
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Il y a un souci dans le sujet du forum anglais... Je n'arrive pas à télécharger les images incluses avec le code que j'évoque plus haut...
Répondre