gadget color avec alpha

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

gadget color avec alpha

Message par Zorro »

ici l'emploi de 2 gadgets ... dont un est encadré avec un titre


Code : Tout sélectionner

;***********************************************
;Titre  :*Palette_gadget
;Auteur  : Zorro 

;***********************************************

;}

Declare.l event_palette_gadget(num) ; a Mettre en Boucle principal  
Declare  Palette_gadget(num,x,y,cadre=0,titre$=""); a Mettre apres Openwindow()
Declare event_palette_gadget_alpha(num,alpha.c)
;{- ***** initialisation du gadget Palette ******************
Structure Pal  ; initialisation du gadget palette
	x.i
	y.i
	largeur.i
	hauteur.i
	Couleur_hex.s ; pour la couleur Hexa
	Couleur.i ; la couleur
	Rouge.i ; composante rouge
	Vert.i ; composante Verte
	Bleu.i ;composante bleu
	Alpha.c ; valeur Alpha
	image_cadrillage.i
	image_palette.i
	cadre.b
	titre.s
EndStructure
Global Dim Pal.Pal(10) ; valable pour 10 gadget palettes
Global Fnt=LoadFont (#Pb_any, "Arial", 6)
;} ****************************************************


Enumeration 1 step 2
	#palette
	#trackbarr1
	#palette2
	#trackbarr2
EndEnumeration



If OpenWindow(0, 0, 0, 800, 600, "Pick_color", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	
	; dessin du gadget palette sans cadre avec le trackbarr
	Larg=276 :haut=276
	Palette_gadget(#palette,20,30,0,"")  :TrackBarGadget(#trackbarr1, Larg+25, y, 20, Haut, 0, 255,#PB_TrackBar_Vertical):SetGadgetState(#trackbarr1,255)
	; dessin du gadget palette Avec cadre
	Palette_gadget(#palette2,400,30,1,"Palette 2 By Zorro")   :TrackBarGadget(#trackbarr2, 400+Larg+25, y, 20, Haut, 0, 255,#PB_TrackBar_Vertical):SetGadgetState(#trackbarr2,255)
	
	Repeat
		Event = WaitWindowEvent(2)
		Select Event
			Case #PB_Event_Gadget
			select EventGadget() 
				
				
				case #palette
				retour=event_palette_gadget(#palette) ; envoi l'event au gadget Palette , qui retourne la couleur choisie dans la Structure
				if retour<>-1
					debug "couleur Palette 1="+ Pal(#palette)\couleur.i;  affiche la couleur  de la Structure
					debug "composante Palette 1= "+"Rouge "+Pal(#palette)\rouge.i+" Vert "+Pal(#palette)\vert.i+" Bleu "+Pal(#palette)\bleu.i + "Alpha "+Pal(#palette)\alpha.c ; retourne les composantes de la couleur choisie, present dans la structure
					Debug "retour de la couleur en Hexa :" +Pal(#palette)\Couleur_hex.s 
					Debug " ************************************************************************"
				Endif
				Case #trackbarr1  ; on touche le trackbarr de la palette 1
				alpha.c=GetGadgetState(#trackbarr1) ; recupere l'alpha du tracbar; et l'envoi a la procedure chargé de faire le boulot
				event_palette_gadget_alpha( #palette,alpha.c)
				
				case #palette2
				retour=event_palette_gadget(#palette2) ;  envoi l'event au gadget Palette , qui retourne la couleur choisie dans la Structure
				if retour<>-1
					debug "couleur Palette 2="+ Pal(#palette2)\couleur.i; affiche la couleur  de la Structure
					debug "composante Palette 2= "+"Rouge "+Pal(#palette2)\rouge.i+" Vert "+Pal(#palette2)\vert.i+" Bleu "+Pal(#palette2)\bleu.i + "Alpha "+Pal(#palette2)\alpha.c ; affiche les composantes de la couleur choisie,  present dans la structure
					Debug "retour de la couleur en Hexa :" +Pal(#palette2)\Couleur_hex.s 
					Debug " ************************************************************************"
				Endif
				Case #trackbarr2
				alpha.c=GetGadgetState(#trackbarr2) ; recupere l'alpha du tracbar; et l'envoi a la procedure chargé de faire le boulot
				event_palette_gadget_alpha( #palette2,alpha.c)
			Endselect
		Endselect
	Until Event = #PB_Event_CloseWindow
Endif





;-** Zone Procedure ***************

Procedure.l event_palette_gadget(num) ; event_palette_gadget(numero du gadget)
	;By Zorro
	; retourne la couleur choisie
	Static Flag_c ,mem_Flag_c
	Select EventType()
		Case #PB_EventType_MouseEnter, #PB_EventType_MouseMove
		Capture = 1
		x1 = GetGadgetAttribute(num, #PB_Canvas_MouseX)
		y1 = GetGadgetAttribute(num, #PB_Canvas_MouseY)
		
		
		
		If StartDrawing(imageOutput(pal(num)\image_palette))
			If (x1 >= 0 And x1 <=255)  And (y1 >=0 And y1 <=275)
				Pal(num)\Couleur.i = Point(x1,y1)
				StopDrawing()
				StartDrawing(CanvasOutput(num))
					Box (257,0,20,128,Pal(num)\Couleur.i)
					
					Flag_c=Pal(num)\couleur.i
					if mem_Flag_c<>Flag_c
						h$=RSet (Hex(Red(Pal(num)\couleur.i)),2,"0") + RSet (Hex(Green(Pal(num)\couleur.i)),2,"0") + RSet (Hex(Blue(Pal(num)\couleur.i)),2,"0")+RSet (Hex(Alpha(Pal(num)\couleur.i)),2,"0")
						DrawingFont(FontID(Fnt))      
						DrawText( 160,256, Space(32) )
						DrawText( 160,256, "Hex : "+ h$ )
						DrawText( 160,266, Space(32) )
						DrawText( 160,266, "R : "+Red(Pal(num)\couleur.i)+" V:"+Green(Pal(num)\couleur.i)+" B:"+Blue(Pal(num)\couleur.i)+" A:"+Pal(num)\alpha.c+ "    " )
						
						mem_Flag_c=Flag_c
					Endif
				EndIf
			StopDrawing()
			;ProcedureReturn
		EndIf
		
		Case  #PB_EventType_LeftClick
		Capture = 0
		;-***** pointage souris ************
		x1 = GetGadgetAttribute(num, #PB_Canvas_MouseX)
		y1 = GetGadgetAttribute(num, #PB_Canvas_MouseY)
		; ********************************
		
		
		If StartDrawing(imageOutput(pal(num)\image_palette))
			If (x1 >= 0 And x1 <=255)  And (y1 >=0 And y1 <=275)
				Pal(num)\Couleur.i = Point(x1,y1)
				StopDrawing()
				StartDrawing(CanvasOutput(num))
					Box (257,129,20,128,Pal(num)\Couleur.i)
					; met les composantes dans la structure
					Pal(num)\rouge.i=Red(Pal(num)\Couleur.i)
					Pal(num)\vert.i=Green(Pal(num)\Couleur.i)
					Pal(num)\bleu.i=Blue(Pal(num)\Couleur.i)
					
					; //Ajout  Ar-S 21/06/14 - 17h06//
					Pal(num)\Couleur_hex.s = RSet (Hex(Red(Pal(num)\couleur.i)),2,"0") + RSet (Hex(Green(Pal(num)\couleur.i)),2,"0") + RSet (Hex(Blue(Pal(num)\couleur.i)),2,"0")+ RSet (Hex(Alpha(Pal(num)\couleur.i)),2,"0") ; met la couleur Hex dans la structure
				EndIf
			StopDrawing()
			ProcedureReturn 
		EndIf
		Default
		Capture = 0
	EndSelect 
	ProcedureReturn -1
EndProcedure

Procedure Palette_gadget(num,x,y,cadre=0,titre$="");Palette_gadget(numero du gadget,x,y,largeur,hauteur)
	; By Zorro
	; Affiche le Gadget Palette
	
	Larg=276 :haut=276
	Pal(num)\cadre=cadre
	Pal(num)\titre.s=titre$
	Pal(num)\x=x
	Pal(num)\y=y
	Pal(num)\largeur=Larg
	Pal(num)\hauteur=haut
	Pal(num)\alpha.c=255
	pal(num)\image_cadrillage=CreateImage(#Pb_Any,larg,haut,32,$0)
	pal(num)\image_palette=CreateImage(#Pb_Any,256,256,32,$0)
	
	if cadre=1
		FrameGadget(#PB_Any, x-25, y-20, Larg+25, Haut+20, titre$)
	Endif
	
	CanvasGadget(num, x,y,larg,haut)
	
	;;If StartDrawing(CanvasOutput(num)) 
	If StartDrawing(imageOutput(pal(num)\image_cadrillage)) 
		DrawingMode(#PB_2DDrawing_Default)
		Box(0,0,255,255,RGB(255,255,255))
		For Y=0 To 255-8
			For X=D To 255-8
				Box(X,Y,8,8,$D3D3D3)
				X+(8*2)
			Next
			Y+8
			If D=0
				D=8
			Else
				D=0
			EndIf
		Next y
		StopDrawing()
	Endif
	
	If StartDrawing(imageOutput(pal(num)\image_palette)) 
		
		DrawingMode(#PB_2DDrawing_Default)
		;{ Palette Graph100
		For y=0 to 255
			For x=0 to 255
				
				abscisse.f=x:Ordonne.f=y: max.f=256: maxY.f=256
				Protected couleur, taux.f, index1.f, index2.f, index3.f, index4.f, index5.f
				
				index1.f = max / 6
				index2.f = 2 * max / 6
				index3.f = 3 * max / 6
				index4.f = 4 * max / 6
				index5.f = 5 * max / 6
				
				If Ordonne * 2 / maxY > 1
					abscisse - index1
					If abscisse < 0 : abscisse + max : EndIf
				EndIf
				
				If abscisse >= 0 And abscisse <= index1
					couleur = RGB(255, (((abscisse * max) / index1) * 255) / max, 0)
				EndIf
				If abscisse > index1 And abscisse <= index2
					couleur = RGB(((max - ((abscisse - index1) * max) / index1) * 255) / max, 255, 0)
				EndIf
				If abscisse > index2 And abscisse <= index3
					couleur = RGB(0, 255, ((((abscisse - index2) * max) / index1) * 255) / max)
				EndIf
				If abscisse > index3 And abscisse <= index4
					couleur = RGB(0, ((max - ((abscisse - index3) * max) / index1) * 255) / max, 255)
				EndIf
				If abscisse > index4 And abscisse <= index5
					couleur = RGB(((abscisse - index4) * 255) / index1, 0, 255)
				EndIf
				If abscisse > index5 And abscisse <= max
					couleur = RGB(255, 0, ((max - ((abscisse - index5) * max) / index1) * 255) / max)
				EndIf
				
				taux.f = Ordonne * 2 / maxY
				If taux <= 1
					couleur = RGB(taux * Red(couleur), taux * Green(couleur), taux * Blue(couleur))
				Else
					taux - 2
					couleur = RGB(255 + taux * Green(couleur), 255 + taux * Blue(couleur), 255 + taux * Red(couleur))
				EndIf
				x1=x+1
				y1=y+1
				if x1>255:x1=255:endif
				if y1>255:y1=255:endif
				;R=Red(couleur) :V=Green(couleur):B=blue(couleur):A=alpha.c
				;couleur=RGB(R,V,B)
				plot(x1,y1,couleur)
				
			Next x
		Next y
		xb=0
		Box(xb,256,20,20,rgb(0,0,0))
		xb=xb+20
		Box(xb,256,20,20,rgb(255,255,255))
		xb=xb+20
		Box(xb,256,20,20,rgb(255,0,0))
		xb=xb+20
		Box(xb,256,20,20,rgb(255,255,0))
		xb=xb+20
		Box(xb,256,20,20,rgb(0,255,0))
		xb=xb+20
		Box(xb,256,20,20,rgb(0,255,255))
		xb=xb+20
		Box(xb,256,20,20,rgb(0,0,255))
		xb=xb+20
		Box(xb,256,20,20,rgb(255,0,255))
		
		;}
		StopDrawing()
	Endif
	; dessin de la palette+cadrillage
	event_palette_gadget_alpha(num,255) ; force la transparence a 255 , car lors de la création, il faut pouvoir le voir
	;;;
Endprocedure

Procedure event_palette_gadget_alpha(num,alpha.c)
	Pal(num)\alpha.c=alpha.c
	; dessin du cadrillage et de la palette
	If StartDrawing(CanvasOutput(num)) 
		DrawingMode(#PB_2DDrawing_AlphaBlend )
		DrawAlphaImage(ImageId(pal(num)\image_cadrillage),0,0,255);
		DrawAlphaImage(ImageId(pal(num)\image_palette),0,0 ,Pal(num)\alpha.c)
		StopDrawing()
	EndIf
Endprocedure


Dernière modification par Zorro le mer. 01/juin/2016 16:56, modifié 5 fois.
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: gadget color avec alpha

Message par falsam »

Bonjour Zorro. Citez l'auteur plutôt que se l'approprier serait honnête.

Code d'origine : http://www.purebasic.fr/french/viewtopi ... 41#p163741
Configuration : Windows 11 Famille 64-bit - PB 6.03 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
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: gadget color avec alpha

Message par Zorro »

oui, mais le miens, il est mieux , il fait l'alpha :mrgreen: :oops:

tiré d'un code de Backup
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: gadget color avec alpha

Message par Kwai chang caine »

En meme temps, faut pas être sherlock holmes pour trouver l'auteur
Y serait content si il était encore là, il adorait ce genre de comportement :mrgreen:

Code : Tout sélectionner

;***********************************************
;Titre  :*Palette_gadget
;Auteur  : Dobro 
; Collaboration : Ar-s
;Date  :15/06/2014
;Heure  :18:46:29
;Version Purebasic :  PureBasic 5.22 LTS (Windows - x86)
;Version de l'editeur :EPB V2.54
; Libairies necessaire : Aucune 
;***********************************************
Un cavalier qui surgit hors de la nuit a écrit :oui, mais le miens, il est mieux , il fait l'alpha
Il fait aussi le flickering en manipulant le trackBar de l'alpha susnommé :wink:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
TazNormand
Messages : 1294
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: gadget color avec alpha

Message par TazNormand »

C'est marrant, quelque chose me dit que "Zorro" n'est pas si nouveau que ça sur le forum 8)
Ses codes me paraissent bien "organisés et propres", pour un nouvel inscrit.
Image
Image
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: gadget color avec alpha

Message par Zorro »

Kwai chang caine a écrit : Il fait aussi le flickering en manipulant le trackBar de l'alpha susnommé :wink:

et bien plus maintenant !!

j'ai modifié le code dans ce sens
du coup, ça le simplifie meme :)


@TazNormand: si si , j'ai commencé Purebasic hier matin
jusque là, je ne codais qu'en binaire , je ne savais pas qu'on pouvait coder en utilisant des mots :lol:

il reste un petit probleme , la capture de la couleur prends en compte le cadrillage

je regarde ça
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: gadget color avec alpha

Message par Kwai chang caine »

TazNormand a écrit :C'est marrant, quelque chose me dit que "Zorro" n'est pas si nouveau que ça sur le forum
Aaaah oui !!! maintenant que tu le dit 8O
Ce serait pas un Zorro qui tiendrait son épée avec deux doigt en forme de V, ou bien qui avant jouait de la corde plutôt que du lasso :mrgreen:
Celui qui signe son nom à la pointe de l'épée a écrit :et bien plus maintenant !!
Exact, merci :wink:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
TazNormand
Messages : 1294
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: gadget color avec alpha

Message par TazNormand »

Kwai chang caine a écrit :
TazNormand a écrit :C'est marrant, quelque chose me dit que "Zorro" n'est pas si nouveau que ça sur le forum
Aaaah oui !!! maintenant que tu le dit 8O
Ce serait pas un Zorro qui tiendrait son épée avec deux doigt en forme de V, ou bien qui avant jouait de la corde plutôt que du lasso :mrgreen:
Celui qui signe son nom à la pointe de l'épée a écrit :et bien plus maintenant !!
Exact, merci :wink:
Marrant je pensais comme toi, à un "vieux garçon" avec une philosophie du genre "Profiter de la vie", et qui manierait plutôt 6 cordes, et de la trompette coudée :lol: ; au départ je pensais même à un obsédé, au langage fleuri, mais à la tête "glabre", et fan d'un pirate de l'espace.
Image
Image
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: gadget color avec alpha

Message par Zorro »

bon problème résolu , en principe ça marche maintenant

j'ai du mal a comprendre votre conversation codée 8O :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: gadget color avec alpha

Message par Micoute »

Et quand je disais que Zorro, ça rime avec Dobro !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: gadget color avec alpha

Message par Zorro »

Micoute a écrit :Et quand je disais que Zorro, ça rime avec Dobro !
comprends pas ... quel rapport avec le sujet ?
il n'y a pas de moderation ici ?
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: gadget color avec alpha

Message par falsam »

Ça spécule ici....
Zorro a écrit :comprends pas ... quel rapport avec le sujet ?
Quand on porte un masque, certains utilisateurs ont envie de savoir qui se cache derrière ce masque et fouille un peu ^^.

Apparemment quelques utilisateurs pensent (Et ils ont peut être raison hein ?) que tu es un ancien membre portant le nom de Dobro qui a juré de ne plus revenir sur le forum de PureBasic.

Je ferais un peu de ménage dans la journée y compris ce message afin de rester dans le sujet.

En tout cas .... Bienvenu Dobro .... Ooops pardon Zorro.

PS : Je ne vais rien modérer finalement.
Configuration : Windows 11 Famille 64-bit - PB 6.03 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
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: gadget color avec alpha

Message par Kwai chang caine »

il n'y a pas de moderation ici ?
Oh que si !!! certains en ont fait les frais...
Mais une modération intelligente, qui laisse la liberté de s'exprimer du moment que les termes ne soient pas réprimé par les regles qui le protége.
Ici on a pour habitude, de dériver de temps en temps, sans exageration bien sur, mais surtout sans pour cela se faire automatiquement censurer. :?
C'est ce qui fait qu'ici, ce n'est pas comme ailleur, on est plus des copains, que des forumeurs comme sur les autres sites

Et celui qui voudrait se la jouer "je vais me plaindre à la maitresse", n'aurait, à mon seul avis, plus de probleme de troll, puisqu'il se retrouverait de plus en plus seul à discuter avec lui même.
Enfin..cela n'engage que moi evidemment :wink:

Alors bienvenu chez nous 8)
La maitresse a écrit :Je ferais un peu de ménage dans la journée y compris ce message afin de rester dans le sujet.
bon bah je vais l'enregistrer, et la mettre avec mes souvenirs déjà bien fournis, de centaines de pages de bastons mémorables :mrgreen:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: gadget color avec alpha

Message par falsam »

Kwai chang caine a écrit :Mais une modération intelligente, qui laisse la liberté de s'exprimer
Et qui respecte le droit à l'oubli.
Kwai chang caine a écrit :Ici on a pour habitude, de dériver de temps en temps
Encore faut il que l’intéressé comprenne.
Kwai chang caine a écrit :sans pour cela se faire automatiquement censurer.
je serais un ayatollah de la censure ? ^^
Kwai chang caine a écrit :Et celui qui voudrait se la jouer "je vais me plaindre à la maitresse", n'aurait, à mon seul avis, plus de probleme de troll, puisqu'il se retrouverait de plus en plus seul à discuter avec lui même.
Mais c'est qu'il fait des menaces le bougre !! :mrgreen:
Configuration : Windows 11 Famille 64-bit - PB 6.03 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
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: gadget color avec alpha

Message par falsam »

A peine il est de retour et c'est déja le cirque ici ...... :mrgreen:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre