Changer la couleur Bordure Canvas ? (#PB_Canvas_Border)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Changer la couleur Bordure Canvas ? (#PB_Canvas_Border)

Message par Ar-S »

Ah ok je pige.
Tu pourrais toujours recopier ta couleur de fond de fenêtre et l'appliquer à ton canvas. Le dessin par dessus offrira alors le "juste mélange de couleur" si tu le dessines avec une couche alpha non ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Changer la couleur Bordure Canvas ? (#PB_Canvas_Border)

Message par kernadec »

oui Ar_s je peux faire cela, bien sur je connais les solutions habituelles.
mais il faut pas mal de code pour le faire.

alors que là une simple option transparence et l'on pourrait
travailler avec plusieurs Canvas superposés, choisir les niveaux visibles
tout simplement avec un simple HideGadget etc..

Cordialement
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Changer la couleur Bordure Canvas ? (#PB_Canvas_Border)

Message par Backup »

kernadec a écrit : enfin, je parlais de la surface de dessin de CanvasGadget.
On pourrait avoir la possibilité de choisir une couleur
de fond avec l'option transparence de cette surface,
genre fenêtre transparente.


Cordialement
en fait c'est facile ! ;)

juste 2 lignes de code ! :mrgreen: :lol: :lol:
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Changer la couleur Bordure Canvas ? (#PB_Canvas_Border)

Message par kernadec »

eh bien bravo Dobro :D
ce que je cherche c'est rendre un Canvasgadget Transparent sans API.

Cordialement
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Changer la couleur Bordure Canvas ? (#PB_Canvas_Border)

Message par Backup »

pffff ! mauvais joueur :twisted:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Changer la couleur Bordure Canvas ? (#PB_Canvas_Border)

Message par Ar-S »

1 image1 de fond de ta fenetre
1 image2 plus petit de la taille de ton canvas ou tu grab juste l'image original à la position et taille du gadget
puis tu redessines ton image2 avec transparence dans le canvas.
Pas besoin d'API même si quelques lignes de codes sont à prévoir effectivement, mais pas des masses non plus.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Changer la couleur Bordure Canvas ? (#PB_Canvas_Border)

Message par Backup »

arf ! je croyais qu'il voulait une reelle transparence !

qu'on voit a travers le Canvas , ET a travers la fenetre ! :lol: (qu'on voit le bureau quoi )

bon voila ce que j'avais trouvé ;)

du reste il me semble qu'il y a un bug de Pb

lors du premier clique sur le canva, la fenetre se barre

on la ramene , on peut dessiner dans le canvas , mais quelque fois ... ???
la fenetre se rebarre au premier clique .... cherchez l'erreur 8O

le code

Code : Tout sélectionner

enumeration
	#win
	#cadre
	#canvas
EndEnumeration

declare WindowCallback(WindowID,message,wParam,lParam)

If OpenWindow(#win, 0, 0, 600, 600, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered|#PB_Window_SizeGadget)
	CanvasGadget(#canvas, 20, 20, 190, 190,#PB_Canvas_Border)
	; ******* grosse arnaque a Dobro  ;o) ***************
	StartDrawing(WindowOutput(#win))
		drawingmode(#PB_2DDrawing_Outlined )
		box(10,10,210,210,rgb(0,0,0)) 
		FillArea(11, 11, -1,rgb(255,0,255))
	StopDrawing()
	
	startdrawing(CanvasOutput(#canvas))
		FillArea(11, 11, -1,rgb(0,125,0)) ;  on met une couleur au fond du Canvas , qui sera la couleur qui deviendra transparente (un fond Vert comme pour la Meteo LOL )
	StopDrawing()
	; *********************************************
	
	;SetWindowColor(#WIN,rgb(0,125,0)) ; si on veut rendre toute la fenetre transparente !! 
	couleuralpha=255
	SetWindowLong_(windowID(#win), #GWL_EXSTYLE, #WS_EX_LAYERED|#WS_EX_TOPMOST)  ; on dit au system que notre fenetre sera "décorée"
	SetLayeredWindowAttributes_(windowID(#win),rgb(0,125,0),couleuralpha,#LWA_COLORKEY|#LWA_ALPHA) ; ici on rends notre vert (rgb(0,125,0)  transparent .. c'est la fameuse "décoration"
	; ******* et voila  ........... fini ****************
	
	
	SetWindowCallback(@WindowCallback())
	
	
	
	
	
	
	Repeat
		Event = WaitWindowEvent(2)
		
		If Event = #PB_Event_Gadget
			if EventGadget() = #canvas 
				;;;If EventType() = #PB_EventType_LeftButtonDown or (EventType() = #PB_EventType_MouseMove )
				if GetGadgetAttribute(#canvas, #PB_Canvas_Buttons) and #PB_Canvas_LeftButton
					If StartDrawing(CanvasOutput(#canvas))
						x = GetGadgetAttribute(#canvas, #PB_Canvas_MouseX)
						y = GetGadgetAttribute(#canvas, #PB_Canvas_MouseY)
						Circle(x, y, 10, RGB(Random(255), Random(255), Random(255)))
					StopDrawing()
				Endif
				;;;EndIf
			Endif
		EndIf
	EndIf    
	
Until Event = #PB_Event_CloseWindow
EndIf



Procedure WindowCallback(WindowID,message,wParam,lParam)
; by Dobro

res=#PB_ProcessPureBasicEvents
Select message
	Case #WM_PAINT
	; ******* grosse arnaque a Dobro  ;o) ***************
	StartDrawing(WindowOutput(#win))
		drawingmode(#PB_2DDrawing_Outlined )
		box(10,10,210,210,rgb(0,0,0)) 
		FillArea(11, 11, -1,rgb(0,255,0))
		drawingmode(#PB_2DDrawing_Default )
		; haut
		for i=2 to 204 step 6
			circle(11+i,15,2,rgb(random(255),random(255),random(255)))
		next i
		; bas
		for i=2 to 204 step 6
			circle(11+i,213,2,rgb(random(255),random(255),random(255)))
		next i
		; gauche
		for i=2 to 204 step 6
			circle(15,11+i,2,rgb(random(255),random(255),random(255)))
		next i
		; droite
		for i=2 to 204 step 6
			circle(213,11+i,2,rgb(random(255),random(255),random(255)))
		next i
	StopDrawing()
	
	; *********************************************
	delay(10)
	ProcedureReturn #True
EndSelect
ProcedureReturn res ; important , laissez passer les autres evenements !!!
EndProcedure







; 

; EPB
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Changer la couleur Bordure Canvas ? (#PB_Canvas_Border)

Message par kernadec »

merci Ar_s, je sais que l'on peut faire comme cela.
mais bon... tu as sans doute raison.

Cordialement
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Changer la couleur Bordure Canvas ? (#PB_Canvas_Border)

Message par kernadec »

merci Dobro c'est pas mal..

le problème, c'est que le canvas est transparent au premier clic on dessine.
ensuite il n'est plus transparent car on est passé au travers
on se retrouve sur le bureau plus moyen de retourner
sur la surface transparente du canvas... dommage.

encore merci

Cordialement
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Changer la couleur Bordure Canvas ? (#PB_Canvas_Border)

Message par Backup »

chez moi le comportement est différent

je lance le prg ( sous debugger )

je clique pour dessiner , la fenetre se barre
je la rappel par la barre des taches (le canvas perd sa transparence )

je peux enfin dessiner et le canvas redevient transparent

et ...

si je relache le click , et que je reclik a nouveau pour dessiner , soit ça marche
soit la fenetre se rebarre !! 8O

c'est pourquoi je pense a un bug PB
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Changer la couleur Bordure Canvas ? (#PB_Canvas_Border)

Message par kernadec »

bug je sais pas ..
pareil il disparait après avoir dessiné.
avec l'icone prg dans la barre de tache, il réapparait.
mais je me retrouve avec le curseur texte dans l'IDE de PB au travers du canvas
si je redessine, il me sélectionne du code texte.
Répondre