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(255,255,255))
StopDrawing()
; *********************************************
SetWindowCallback(@WindowCallback())
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget And EventGadget() = #canvas
If EventType() = #PB_EventType_LeftButtonDown Or (EventType() = #PB_EventType_MouseMove And GetGadgetAttribute(#canvas, #PB_Canvas_Buttons) & #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
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