J'ai cherché le moyen de dessiner uniquement sur l'alpha d'une image (avec un drawalphaimage()).
Voici donc ce que j'ai trouvé. Merci à LSI, car je suis d'un code que j'ai trouvé sur un de ses sujets :
Enlever de l'alpha sur une image :
Code : Tout sélectionner
Procedure FiltreMelangeAlpha2(x, y, SourceColor, TargetColor) ; filter To mix alpha for the eraser tool
; By Le Soldat inconnu
; modif by blendman
If Alpha(TargetColor) - Alpha(SourceColor) >= 0
ProcedureReturn RGBA(Red(TargetColor), Green(TargetColor), Blue(TargetColor), Alpha(TargetColor)-Alpha(SourceColor))
Else
ProcedureReturn RGBA(Red(TargetColor), Green(TargetColor), Blue(TargetColor), 0)
EndIf
EndProcedure
Code : Tout sélectionner
Procedure FiltreMelangeAlpha3(x, y, SourceColor, TargetColor)
If Alpha(TargetColor) + Alpha(SourceColor) <= 255
ProcedureReturn RGBA(Red(TargetColor), Green(TargetColor), Blue(TargetColor), Alpha(SourceColor)+Alpha(TargetColor))
Else
ProcedureReturn RGBA(Red(TargetColor), Green(TargetColor), Blue(TargetColor), 255)
EndIf
Endprocedure
Code : Tout sélectionner
DrawingMode(#PB_2DDrawing_CustomFilter)
CustomFilterCallback(@FiltreMelangeAlpha2()) ; pour utiliser la gomme
DrawAlphaImage(ImageID(#VotreImage), X, y, alpha) ; ou avec une couleur en RGBA().
Exemple d'utilisation :
- gommer un calque d'une image
- utiliser un masque alpha
- pour créer un outil de type motif (pattern)
etc..