Créer une Image transparente !

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Créer une Image transparente !

Message par Thyphoon »

Cool Dji a écrit :Génial la photo :D
Pratique une borne a la maison .... mais bon les gamins n'arrête pas de me demandé un coup de main pour passé tel ou tel truc ... et j'arrive pas a avancé dans mon debuggage ! surtout que là je comprends pas pourquoi ça marche dans un code minimaliste et pas une fois intégré dans mon jeu ... je trouve pas ce qui cloche :!:!!
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Créer une Image transparente !

Message par Thyphoon »

PUTAIN !!! (Désolé cher Modérateur ...mais fallait que ça sorte :P)

j'ai trouvé !!! en verité ça marche en DirectX7 mais pas en DirectX9 ....
Essayé de compiler normalement puis en DirectX9 !
vous allez comprendre
A votre avis je dois posté ça sur le forum bug Anglais ???

Code : Tout sélectionner

InitSprite()
InitSprite3D()
#Img_HighScore=0
Procedure Init_Obj_HighScore()
  If CreateImage(#Img_HighScore, 255, 255, 32)
    StartDrawing(ImageOutput(#Img_HighScore))
    ; ON dessine juste sur la couche alpha
    DrawingMode(#PB_2DDrawing_AlphaChannel)
    ; on met toutes l'image avec un alpha = 0 donc transparent
    Box(0, 0, 255, 255, 0)
    DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
    Box(0,0,100,100,RGBA(255,0,0,255))
    FrontColor(RGB(255,255,255)) ; print the text to white !
    DrawText(40, 50, "An image created easely...",RGBA(255,255,255,255))
    StopDrawing()
  EndIf
 
  CreateSprite(#Img_HighScore,255,255,#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
  StartDrawing(SpriteOutput(#Img_HighScore))
  DrawingMode(#PB_2DDrawing_Default)
    DrawAlphaImage(ImageID(#Img_HighScore),0,0)
  StopDrawing()
  CreateSprite3D(#Img_HighScore,#Img_HighScore)
EndProcedure

Procedure Display_Obj_HighScore()
Static x
If x<250
        x+5
      Else
        x=10
      EndIf
  DisplaySprite3D(#Img_HighScore,x,10)
EndProcedure


If OpenWindow(0, 100, 100, 500, 300, "PureBasic - Image")
  OpenWindowedScreen(WindowID(0),0,0,500,300,1,0,0)
  Init_Obj_HighScore()
  Repeat
    EventID = WindowEvent()
   
      ClearScreen(RGB(255,128,128))
      Start3D()
      Display_Obj_HighScore() 
      Stop3D()
      
   FlipBuffers()
  Until EventID = #PB_Event_CloseWindow  ; If the user has pressed on the close button

EndIf

End   ; All the opened 
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Créer une Image transparente !

Message par Thyphoon »

Le bug est comfirmé et Fred a dit qu'il ne serait pas regler pour la 4.40
en gros un startdrawing(spirteoutput()) detruit la couche alpha

netmaestro a proposé une solution en attendant
http://www.purebasic.fr/english/viewtop ... 31#p306031
TARD
Messages : 12
Inscription : jeu. 08/janv./2009 18:01

Re: Créer une Image transparente !

Message par TARD »

Je pense plutot que c'est un probleme de version de purebasic car avec la 4.40 beta 1 cela fonctionne tres bien pour :
For k=0 To 255
FrontColor(RGB(k,0, k)) ; a rainbow, from black to pink
Line(0, k, 255, 0)
Next

mais avec les autres beta ca ne fonctionne plus!!!!
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Créer une Image transparente !

Message par Le Soldat Inconnu »

Code : Tout sélectionner

Line(0, k, 255, 0)
comme je l'ai déjà dis, il faut écrire

Code : Tout sélectionner

Line(0, k, 255, 1)
c'est une modif de la 4.40, une ligne ne peut pas avoir une épaisseur de 0 px, elle a une épaisseur de 1px
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre