Page 1 sur 1

Image non initialisée

Publié : mar. 14/avr./2015 17:09
par stc
Bonjour, je suis nouveau dans le monde du pure basic, je trouve ce langage super.
j'ai un problème j'essaie d'inclure une image et de l'affiché en tentant de faire un espèce de fondu avec la transparence.

Code : Tout sélectionner

Procedure init()
  If InitSprite()=0 Or InitMouse()=0
    MessageRequester("Error", "can't initialize mouse or sprite", #PB_MessageRequester_Ok)
    End
  EndIf
    
  ;initialise l'écran
 If OpenScreen(800, 600, 32, "HMD")=0
    MessageRequester("Error", "Could not init screen, sorry", #PB_MessageRequester_Ok)
    End
  EndIf
  
  UsePNGImageDecoder()  
  handleLogo=CatchImage(#PB_Any, ?logo)
  
    StartDrawing(ScreenOutput())
  EndProcedure
  
  Procedure quit()
    StopDrawing()
   CloseScreen()
  EndProcedure
  
  Procedure mouse()
    While MouseButton(#PB_MouseButton_Left)=0
    Wend
    lmb=1
  EndProcedure
  
  Procedure intro()
    For alpha=0 To 255
      DrawAlphaImage(ImageID(handleLogo), 0, 240, alpha)
    Next
   EndProcedure
  
  DataSection
logo:
IncludeBinary "../gfx/hemoroids.png"
EndDataSection
j'appelle d'abord la procedure init() puis intro() puis lmb() puis quit()
Pure basic me renvoie cette erreur :
The specified #image is not initialized à la ligne du DrawAlphaImage
je declare dans mon fichier principal la variable

Code : Tout sélectionner

Global handleLogo.l
Merci !

Re: Image non initialisée

Publié : mar. 14/avr./2015 17:49
par falsam
Bonjour stc.

Ton handle étant bien en global, je pense que ça doit venir de ton fichier png.
IncludeBinary "../gfx/hemoroids.png"
Ces .. m’étonne un peu ?

J'ai fait un test chez moi et je n'ai pas d'anomalie si j'exclu ces ..

Serais tu sous Linux ? si oui attention aussi à la casse dans le nom de ton fichier.

Re: Image non initialisée

Publié : mar. 14/avr./2015 18:04
par falsam
Mon code de test très moche autant pour l'édition que pour le rendu

Code : Tout sélectionner

Global handleLogo

Procedure init()
  Protected n
  
  If Not (InitSprite() And InitMouse() And InitKeyboard())
    MessageRequester("Error", "can't initialize mouse or sprite", #PB_MessageRequester_Ok)
    End
  EndIf
 
  If Not OpenScreen(800, 600, 32, "HMD")
    MessageRequester("Error", "Could not init screen, sorry", #PB_MessageRequester_Ok)
    End
  EndIf
  
  UsePNGImageDecoder()  
    
  handleLogo=CatchImage(#PB_Any, ?logo)
  
  StartDrawing(ScreenOutput())
  For n = 1 To 200
    DrawAlphaImage(ImageID(handleLogo), Random(700, 100), Random(500, 100), n)
  Next
  
  StopDrawing()
EndProcedure
  
Procedure Start()
  init()
  Repeat      
    FlipBuffers()               
    ExamineKeyboard()  
  Until KeyboardPushed(#PB_Key_Escape)
EndProcedure

Start()

DataSection 
  logo:
IncludeBinary "gfx/i1.png"
EndDataSection
J'affiche plusieurs papillons (positions aléatoires) avec une couche alpha variant de 1 à 200

Le papillon à mettre dans le dossier gfx
Image

Re: Image non initialisée

Publié : mar. 14/avr./2015 20:26
par Ar-S
Salut et bienvenue.

Ton startdrawing() qui commence dans une procédure et se clos dans une autre m'interpelle...
Sinon tu es sûr de ton chemin ? Fais un Resultat.q = FileSize("toncheminverstonfichier") pour voir.

Re: Image non initialisée

Publié : mer. 15/avr./2015 20:36
par stc
bonjour, merci pour vos réponse, le forum à l'air bien actif ! :D
J'ai adapté mon code et la plus de bug mais j'ai un écran noir (avec le curseur de la souris), à quoi sert FlipBuffers ? c'est pour du double buffering?
Pour le fichier, à la compilation si il ne le trouve pas il me le dit donc le chemin était bon, j'ai essayé avec le papillon sans plus de succès.
Par contre j'ai ouvert un autre topic car j'arrive pas à trouver le paquet libgnomeprintui-2.2-dev sur ma distrid ubuntu 14.04, le problème vient peut être de là.
Merci.

Re: Image non initialisée

Publié : mer. 15/avr./2015 21:39
par falsam
falsam a écrit :Serais tu sous Linux ? si oui attention aussi à la casse dans le nom de ton fichier.
Donc la réponse est oui :)

Re: Image non initialisée

Publié : jeu. 16/avr./2015 8:33
par Atif
C'est juste un conseil pour gagner en lisibilité et pour d'éventuelles recherches futures sur le fofo.
Tu mets ça en début de ton fil de discussion avant ton code ça suffit. En plus ça permet aux personnes n'ayant pas le temps de le lire ou de lancer pb pour le compiler (comme moi quand j'ai écrit ces lignes ce matin) de savoir en un clin d'oeil si le sujet nous intéresse ou pas.