Masque alpha sur une image 32bits
Publié : mar. 20/avr./2010 20:08
Ce code permet d'appliquer un masque Alpha sur une image 32 bits.
En gros, j'applique le masque uniquement sur la couche alpha de l'image pour en modifier la transparence.
En gros, j'applique le masque uniquement sur la couche alpha de l'image pour en modifier la transparence.
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 4.40
;
; Explication du programme :
; Appliquer un masque alpha sur une image 32 bits
Procedure Filtre_MelangeAlpha(x, y, CouleurSource, CouleurDestination)
ProcedureReturn (CouleurSource & $00FFFFFF) | (Alpha(CouleurSource)*Alpha(CouleurDestination)/255)<<24
EndProcedure
; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 300, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0
End
EndIf
CreateImage(0, 100, 100, 32) ; Crétion du masque
StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0, 0, 100, 100, 0)
DrawingMode(#PB_2DDrawing_AlphaBlend)
Box(25, 25, 50, 50, $FF000000)
Box(75, 0, 25, 100, $80000000)
StopDrawing()
CreateImage(1, 100, 100, 32) ; Image
StartDrawing(ImageOutput(1))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0, 0, 100, 100, 0)
DrawingMode(#PB_2DDrawing_AlphaBlend)
Box(0, 0, 100, 50, $80FF00FF)
Box(0, 50, 100, 50, $80FFFF00)
StopDrawing()
CreateImage(2, 100, 100, 32) ; Image avec le masque
StartDrawing(ImageOutput(2))
DrawingMode(#PB_2DDrawing_AlphaChannel)
DrawAlphaImage(ImageID(0), 0, 0)
DrawingMode(#PB_2DDrawing_CustomFilter)
CustomFilterCallback(@Filtre_MelangeAlpha())
DrawAlphaImage(ImageID(1), 0, 0)
StopDrawing()
ImageGadget(0, 0, 0, 100, 100, ImageID(2))
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Menu
Select EventMenu() ; Menus
EndSelect
Case #PB_Event_Gadget
Select EventGadget() ; Gadgets
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow