Ecrire du texte autre que noir sur une image transparente ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Ecrire du texte autre que noir sur une image transparente ?

Message 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 ?
:(
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

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

Message 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 )
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

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

Message 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.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message par falsam »

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

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

Message 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
ImageImage
Répondre