Page 1 sur 1

Transparence PNG dans fenêtre windows

Publié : mar. 29/juil./2008 14:03
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 ?

Publié : mar. 29/juil./2008 14:27
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

Publié : mar. 29/juil./2008 17:19
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.

Publié : mar. 29/juil./2008 17:30
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.

Publié : mar. 29/juil./2008 17:53
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é.

Publié : mar. 29/juil./2008 17:55
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à :(

Publié : mar. 29/juil./2008 18:48
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

Publié : mar. 29/juil./2008 19:02
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...