arf ! je croyais qu'il voulait une reelle transparence !
qu'on voit a travers le Canvas , ET a travers la fenetre !

(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
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