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_BlendInvertDestinationAlphaLes 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