Page 1 sur 2
probleme d'affichage
Publié : dim. 21/juin/2009 11:17
par chikun
Voilà, je voudrais afficher autre chose que des rond des carrés des traits...
j'ai cherché et effectuer un ti code en mettant l'image ci-dessous dans le même dossier que le code
mais: le prog passe en page blanche apres 4/5 secondes , de plus l'effacement de l'image (dont le fond PAS totalement noir (?)) laisse à désirer
kkun peut m'aider?

[/img]
Code : Tout sélectionner
ecranx = GetSystemMetrics_(#SM_CXSCREEN)
ecrany = GetSystemMetrics_(#SM_CYSCREEN)
InitSprite()
InitKeyboard()
InitMouse()
OpenWindow(0,0,0,ecranx,ecrany,"testimage",#PB_Window_ScreenCentered|#PB_Window_SystemMenu )
OpenWindowedScreen(WindowID(0),0,0,ecranx,ecrany,0,0,0)
Enumeration
#fond
#obj1
EndEnumeration
UsePNGImageDecoder()
CreateSprite(#fond,EcranX,EcranY)
StartDrawing(SpriteOutput(#fond))
Box(0,0,EcranX,EcranY,RGB(0,0,0))
StopDrawing()
LoadSprite(#obj1,"flame.png")
Repeat
ExamineMouse()
DisplayTransparentSprite(#obj1,MouseX(),MouseY())
FlipBuffers()
Delay(1)
DisplaySprite(#fond,ecranx,ecrany)
Until MouseButton(2)
Publié : dim. 21/juin/2009 11:21
par chikun
mince, g mis un "END" en fin de prog et le blem est résolu
sauf pour les deux barre blanche de mon image
je réédite car ça plante toujours!

Publié : dim. 21/juin/2009 13:59
par lepiaf31
Je n'ai pas compris pourquoi tu as mis un sprite de fond, laisser le screen n'aurait pas suffit ?
Bon sinon j'ai réussi à régler ton problème. J'ai rajouter un ClearScreen() pour remettre l'ecran noi. Pour les bandes blanches de l'image, j'ai d'abord chargé l'image en mémoire avant de la dessiner avec DrawAlphaImage() sur le sprite.
Code : Tout sélectionner
ecranx = GetSystemMetrics_(#SM_CXSCREEN)
ecrany = GetSystemMetrics_(#SM_CYSCREEN)
InitSprite()
InitKeyboard()
InitMouse()
OpenWindow(0,0,0,ecranx,ecrany,"testimage",#PB_Window_ScreenCentered|#PB_Window_SystemMenu )
OpenWindowedScreen(WindowID(0),0,0,ecranx,ecrany,0,0,0)
Enumeration
#fond
#obj1
EndEnumeration
UsePNGImageDecoder()
; CreateSprite(#fond,EcranX,EcranY)
; StartDrawing(SpriteOutput(#fond))
; Box(0,0,EcranX,EcranY,RGB(0,0,0))
; StopDrawing()
If LoadImage(0, "flame.png")
CreateSprite(#obj1, ImageWidth(0), ImageHeight(0))
StartDrawing(SpriteOutput(#obj1))
DrawAlphaImage(ImageID(0), 0, 0)
StopDrawing()
Repeat
ExamineMouse()
ClearScreen(0)
DisplayTransparentSprite(#obj1,MouseX(),MouseY())
FlipBuffers()
Delay(1)
;DisplaySprite(#fond,ecranx,ecrany)
Until MouseButton(2)
EndIf
End
Publié : dim. 21/juin/2009 14:27
par chikun
lepiaf31 :

cool , je te remercie , tu m'apprends ça en fait:
CreateSprite(#obj1, ImageWidth(0), ImageHeight(0))
StartDrawing(SpriteOutput(#obj1))
DrawAlphaImage(ImageID(0), 0, 0)
StopDrawing()
mais ça change pas que la fenêtre devient blanc au bout de 5secondes avec le sablier actif et je dois cliquer sur la croix pour kil me dise "terminer maintenant"...
En tout cas je suis content, j'avance un peu plus grâce à toi

Publié : dim. 21/juin/2009 14:37
par lepiaf31
Ha ben c'est bizarre, chez moi je n'ai plus la fenetre qui devient blanche. Tu as toujours la fenetre blanche avec mon code (sans enlever les ";") ?
Publié : dim. 21/juin/2009 15:28
par chikun
lepiaf31:
Ecoute, je suis pas tres calé. mais g pas modifié le prg que tu m'a remis et g tj le meme probleme.
g passé ccleanner, nettoyé la base de registre (en gros sans savoir kom bq)
g redemarré le pc et idem , c pareil
alors, g la version 4.20 demo sous xp
ca deconne à 8econdes exactement meme si je ne touche à rien
Publié : dim. 21/juin/2009 15:48
par chikun

Attend j'allucine, g fait "msconfig" et trouvé 2 saloperies dans "demarrage"
c bon maintenant ça marche
par contre tu as fait quoi exactement avec mon image "flame"?
car quand j'en met un autre "png" de taille sensiblement superieur, rien ne s'affiche !?

Publié : dim. 21/juin/2009 16:06
par lepiaf31
Et ben j'ai rien fait de particulier. Es-tu sûr d'avoir bien mis le bon chemin d'acces à l'image dans ton code ? Sinon montre moi l'image que tu essayes de mettre et je te dirai ce que ca fait chez moi.
Publié : dim. 21/juin/2009 16:14
par lepiaf31
Alors j'ai fais un test et moi aussi il y a un probleme avec des images plus grandes. J'ai changé DrawAlphaImage() en DrawImage() et cela a marché (mais évidemment la transparence n'est plus prise en compte). C'est donc la fonction DrawAlphaImage() qui semble poser un problème avec les images de plus grande taille.
Peut-etre que c'est parce que l'image que tu utilise n'est pas une image 32 bits.
Publié : dim. 21/juin/2009 16:15
par chikun
g remarqué que "flame" à une profondeur de 32bits et tous les autres 24
c pour ça ke g pas d'affichage?
(?)
oups je réédite , j'avais pas vu que t'avais repondu, je retourne voir ça je te renvoi l'autre image atta
[/img]
Publié : dim. 21/juin/2009 16:17
par lepiaf31
Oui je pense que c'est cela moi j'avais utilisé une image 48 bits et ca n'avait pas marché non plus. Il faut absolument une image 32 bits.
Publié : dim. 21/juin/2009 16:21
par chikun
non! meme en 32 ça marche pas , enfin voilà une autre en 32 bits de prof;

[/img]
Publié : dim. 21/juin/2009 16:24
par lepiaf31
Non celle-ci elle est en 24 bits (pour le savoir tu fais clic droit > propriétés > onglet résumé > avancé > et tu regarde la ligne Profondeur de la couleur)
EDIT: test avec cette image et ca marche:
http://25.img.v4.skyrock.net/251/freydj ... mall_1.png
Publié : dim. 21/juin/2009 16:28
par Backup
chikun a écrit :
mais ça change pas que la fenêtre devient blanc au bout de 5secondes avec le sablier actif et je dois cliquer sur la croix pour kil me dise "terminer maintenant"...
pas la peine d'essayer ton code !!
le symptome que tu decris me suffit !!
t'aurai pas oublié de gerer les events ?? ........... par hasard ??
rajoute
quelques part !!
dans la boucle principal
Publié : dim. 21/juin/2009 16:39
par chikun
ah te voilà toi !

t'as pas fini le champ. kan meme
bon , suis bien tout ce qui vient d'être dit , j'avais vraiment une merde au menu démarrage de mon pc, g plus cette page blanche.
le blem c que en utilisant une image "png" profondeur 24bit ça marche, voir le code remodelé par lepiaf31 plus haut , mais si je met une image de 32 , il y a rien.
par contre ça marche bien, mais il y a tous les bords blancs (de l'image) kan on utilise :
DisplayTransparentSprite