SpriteBlendingMode()

Syntaxe

SpriteBlendingMode(ModeSource, ModeDestination)
Description
Change la façon dont les couleurs des sprites sont mélangées avec le fond lors de l'utilisation de DisplayTransparentSprite().

Arguments

ModeSource, ModeDestination Les modes source et destination peuvent prendre une valeur quelconque parmi les valeurs suivantes:
  #PB_Sprite_BlendZero
  #PB_Sprite_BlendOne
  #PB_Sprite_BlendSourceColor
  #PB_Sprite_BlendInvertSourceColor
  #PB_Sprite_BlendDestinationColor
  #PB_Sprite_BlendInvertDestinationColor
  #PB_Sprite_BlendSourceAlpha
  #PB_Sprite_BlendInvertSourceAlpha
  #PB_Sprite_BlendDestinationAlpha
  #PB_Sprite_BlendInvertDestinationAlpha
Les valeurs par défaut sont SpriteBlendingMode(#PB_Sprite_BlendSourceAlpha, #PB_Sprite_BlendInvertSourceAlpha).

Valeur de retour

Aucune.

Exemple

 ;Structure contenant le nom et le mode de transparence
Structure ModeTransparence
  Nom$
  Numero.l
EndStructure

 ;Liste qui contient tous les "ModeSource"
NewList ModeSource.ModeTransparence()
AddElement(ModeSource())   
ModeSource()\Nom$ = "#PB_Sprite_BlendZero"
ModeSource()\Numero =#PB_Sprite_BlendZero
AddElement(ModeSource())   
ModeSource()\Nom$ = "#PB_Sprite_BlendOne"
ModeSource()\Numero =#PB_Sprite_BlendOne
AddElement(ModeSource())   
ModeSource()\Nom$ = "#PB_Sprite_BlendSourceColor"
ModeSource()\Numero =#PB_Sprite_BlendSourceColor
AddElement(ModeSource())   
ModeSource()\Nom$ = "#PB_Sprite_BlendInvertSourceColor"
ModeSource()\Numero =#PB_Sprite_BlendInvertSourceColor
AddElement(ModeSource())   
ModeSource()\Nom$ = "#PB_Sprite_BlendDestinationColor"
ModeSource()\Numero =#PB_Sprite_BlendDestinationColor
AddElement(ModeSource())   
ModeSource()\Nom$ = "#PB_Sprite_BlendInvertDestinationColor"
ModeSource()\Numero =#PB_Sprite_BlendInvertDestinationColor
AddElement(ModeSource())   
ModeSource()\Nom$ = "#PB_Sprite_BlendSourceAlpha"
ModeSource()\Numero =#PB_Sprite_BlendSourceAlpha
AddElement(ModeSource())   
ModeSource()\Nom$ = "#PB_Sprite_BlendInvertSourceAlpha"
ModeSource()\Numero =#PB_Sprite_BlendInvertSourceAlpha
AddElement(ModeSource())   
ModeSource()\Nom$ = "#PB_Sprite_BlendDestinationAlpha"
ModeSource()\Numero =#PB_Sprite_BlendDestinationAlpha
AddElement(ModeSource())   
ModeSource()\Nom$ = "PB_Sprite_BlendInvertDestinationAlpha"
ModeSource()\Numero =#PB_Sprite_BlendInvertDestinationAlpha

 ;Liste qui contient tous les "ModeDestination"
NewList ModeDestination.ModeTransparence()
CopyList(ModeSource(), ModeDestination())

 ;Initialisation des sprites et du clavier
InitSprite()
InitKeyboard()

 ;Création de l'image de fond qui permettra de voir la transparence des sprites
CreateImage(1,800,600,32)
StartDrawing(ImageOutput(1))
Box(0,0,800,600,RGBA(255,255,255,255))
For i=1 To 1000
  Ellipse(Random(800,1), Random(600,1), Random(8,1), Random(8,1) , RGB(Random(255),Random(255),Random(255))) 
Next i
StopDrawing()

 ;Ouverture d'un écran
OpenScreen(800,600,32,"Sprite")

 ;Sprite Cible.
CreateSprite(0,100,100,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(0))
Circle(50,50,49,RGBA(255,255,0,255))
Circle(50,50,40,RGBA(0,255,0,128))
Circle(50,50,30,RGBA(0,255,255,128))
Circle(50,50,20,RGBA(0,0,255,128))
Circle(50,50,10,RGBA(255,0,0,64))
StopDrawing()

 ;Pour toutes les combinaisons entre le ModeSource et le ModeDestination
ForEach ModeSource()
  ForEach ModeDestination()
    
    ;Le programme se termine si on appuie longtemps sur la touche Echap (ESC)
    ExamineKeyboard() 
    If KeyboardPushed(#PB_Key_Escape)
      End
    EndIf
    
    ;Affichage du fond et de quelques informations
    StartDrawing(ScreenOutput())
    DrawImage(ImageID(1),1,1)
    DrawText(0, 0, "Appuyer 5 secondes sur Echap pour quitter")
    DrawText(50, 100, ModeSource()\Nom$+" / "+ModeDestination()\Nom$, RGB(255,255,255), RGB(255,0,0))
    DrawText(50, 270, "Couleur transparente = Noire", RGB(255,255,0))
    DrawText(50, 470, "Couleur transparente = Rouge", RGB(255,255,0))
    StopDrawing()
    
    ;TRANSPARENCE du sprite : Couleur noire par défaut
    SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero)
    DisplaySprite(0, 50, 160)
    
    SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero)
    TransparentSpriteColor(0, RGBA(0,0,0,128))
    
    SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero)
    DisplayTransparentSprite(0, 200, 160,180)
    
    SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero)
    DisplayTransparentSprite(0, 350, 160,128,RGBA(255,0,0,180))
    
    SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero)
    DisplayTransparentSprite(0, 500, 160,0,RGBA(255,0,0,180))
    
    SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero)
    DisplayTransparentSprite(0, 500, 160,255,RGBA(255,0,0,180))
    
    SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero)
    DisplaySprite(0, 50, 360)
    SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero)
    
    ;TRANSPARENCE du sprite : Couleur rouge
    TransparentSpriteColor(0, RGBA(255,0,0,180))
    
    SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero)
    DisplayTransparentSprite(0, 200, 360,180)
    
    SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero)
    DisplayTransparentSprite(0, 350, 360,180)
    
    SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero)
    DisplayTransparentSprite(0, 500, 360,0)
    
    SpriteBlendingMode(ModeSource()\Numero, ModeDestination()\Numero)
    DisplayTransparentSprite(0, 500, 360,255)
    
    ;Affichage à l'écran  
    FlipBuffers()
    
    ;Effacer le buffer
    ClearScreen(RGBA(255,255,255,255))
    
    ;Attendre 3 secondes
    Delay(3000)
    
  Next
Next

OS Supportés

Tous

<- SaveSprite() - Sprite Index - SpriteCollision() ->