Page 1 sur 1

Ecrire du texte autre que noir sur une image transparente ?

Publié : mar. 02/août/2016 15:56
par Marc56
Hello,

Est-il possible d'écrire du texte en couleur sur une image transparente ?

J'ai du mal avec les notions de transparence alpha etc :? (je débute dans ce domaine)
Sur mon appli (voir copie écran à gauche), je marque les zones libres avec une image transparente contenant le numéro.
Je n'arrive pas à donner une couleur à ce texte: il est toujours noir :|
Je veux garder ce système d'image transparentes car il permet de changer la couleur du fond des pages sans régénérer les images.

Code isolé

Code : Tout sélectionner

Enumeration 
    #Window_0
    #Image_0
    #Tmp_Img
EndEnumeration

OpenWindow(#Window_0, 0, 0, 200, 100, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ImageGadget(#Image_0, 0, 00, 200, 100, 0)

If CreateImage(#Tmp_Img, 200, 100, 32, #PB_Image_Transparent) And
    StartDrawing(ImageOutput(#Tmp_Img))
    
    DrawingMode(#PB_2DDrawing_AlphaChannel | #PB_2DDrawing_Transparent)
    
    DrawText(10, 10, "Texte sans couleur")      ; OK
    DrawText(10, 50, "Texte vert", $00FF00)     ; Rien (car couleur précisée)
    
    StopDrawing()
    SetGadgetState(#Image_0, ImageID(#Tmp_Img))
EndIf

While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
La ligne "Texte vert" n'est pas affichée.
J'ai essayé plusieurs modes pour DrawingMode()

Possible ou pas ?
:(

Re: Ecrire du texte autre que noir sur une image transparent

Publié : mar. 02/août/2016 16:08
par Zorro
deja il te faut une couleur avec Alpha (RGBA(R,v,B,Alpha)

et ensuite c'est pas #PB_2DDrawing_AlphaChannel mais #PB_2DDrawing_AlphaBlend qu'il te faut :)

Code : Tout sélectionner

Enumeration
		#Window_0
		#Image_0
		#Tmp_Img
EndEnumeration
OpenWindow(#Window_0, 0, 0, 200, 100, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ImageGadget(#Image_0, 0, 00, 200, 100, 0)
If CreateImage(#Tmp_Img, 200, 100, 32, #PB_Image_Transparent) And
		StartDrawing(ImageOutput(#Tmp_Img))
				DrawingMode(#PB_2DDrawing_AlphaBlend  | #PB_2DDrawing_Transparent )
				DrawText(10, 10, "Texte sans couleur",rgbA(0,0,0,200))      ; couleur un peut transparente
				DrawText(10, 30, "Texte vert", RGBA(0,255,0,200))     ; ; couleur un peut transparente
				DrawText(10, 60, "Texte rouge", RGBA(255,0,0,80))     ; ; couleur super transparente

		StopDrawing()
		SetGadgetState(#Image_0, ImageID(#Tmp_Img))
EndIf
While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend 

a propos de Alphachanel ,a doc dit :
#PB_2DDrawing_AlphaChannel
Les opérations de dessin ne modifieront que les valeurs du canal alpha de la surface de dessin. Toutes les informations concernant les couleurs seront ignorées
comme son nom l'indique, Alphachanel ne sert qu'a modifier la composante ALPHA (transparence )

Re: Ecrire du texte autre que noir sur une image transparent

Publié : mar. 02/août/2016 16:17
par Marc56
deja il te faut une couleur avec Alpha (RGBA(R,v,B,Alpha)
et ensuite c'est pas Alphachannel mais AlphBlend qu'il te faut :)
Parfait, je comprends enfin et vais pouvoir atténuer mes numéros :P

Merci :wink:

PS. Nouvelle du Desk version uploadée avec les numéros en gris clair et quelques autres améliorations esthétiques.

Re: Ecrire du texte autre que noir sur une image transparent

Publié : mar. 02/août/2016 16:42
par falsam

Re: Ecrire du texte autre que noir sur une image transparent

Publié : mar. 02/août/2016 19:39
par case
et pour ne pas avoir de couleur de fond sur le texte "outlined" aussi peut servir :) tiens ça fonctionne pas sur une image transparente oO