Transformer un Screen en gadget
Publié : lun. 22/juin/2015 9:13
Ce post fait suite au post http://www.purebasic.fr/french/viewtopi ... =1&t=15256 après, plusieurs solutions "spock" dans un des ses codes montre qu'il est possible, d' affecter un screen à un gadget plutôt qu'a une fenêtre.L'avantage du screen réside dans sa rapidité d'affichage et le peu de consommation en ressource. Ce code montre comment avoir les avantages d'un canvas gadget et d'un screen, il y a des scrolArea, un splitter un drag and drop du screen vers la liste
Attention: ExamineMouse() n'a plus d’effet
Attention: ExamineMouse() n'a plus d’effet
Code : Tout sélectionner
UsePNGImageDecoder()
Enumeration
#MainForm
#List
#Canvas
#Area
#AreaList
#splitter
EndEnumeration
#SplitterWidth=150
InitSprite()
InitKeyboard()
InitMouse()
OpenWindow(#MainForm,0,0,800,600,"Teste drag",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ScrollAreaGadget(#AreaList,0,0,#SplitterWidth,600,#SplitterWidth,600)
ListViewGadget(#List,0,0,#SplitterWidth,600)
CloseGadgetList()
EnableGadgetDrop(#List,#PB_Drop_Text,#PB_Drag_Copy)
ScrollAreaGadget(#Area,200,0,600,600,1200,1200)
CanvasGadget(#Canvas,0,0,1200,1200)
OpenWindowedScreen(GadgetID(#Canvas),0,0,1200,1200)
CloseGadgetList()
SplitterGadget(#splitter,0,0,800,600,#AreaList,#Area,#PB_Splitter_Vertical)
SetGadgetState(#splitter,#SplitterWidth)
CreateSprite(0,200,200)
StartDrawing(SpriteOutput(0))
Box(0,0,200,200,#Red)
StopDrawing()
X=316
N=0
Repeat
Event=WaitWindowEvent(1)
X=GetGadgetAttribute(#Canvas,#PB_Canvas_MouseX)
Y=GetGadgetAttribute(#Canvas,#PB_Canvas_MouseY)
Select Event
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case #Canvas
Select EventType()
Case #PB_EventType_LeftButtonDown
DragText("teste")
Case #PB_EventType_MouseEnter
ClearScreen(RGB(0,0,0))
DisplaySprite(0,X,Y)
FlipBuffers()
Case #PB_EventType_MouseMove
ClearScreen(RGB(0,0,0))
DisplaySprite(0,X,Y)
FlipBuffers()
EndSelect
Case #splitter
If GetGadgetState(#splitter)>#SplitterWidth
ResizeGadget(#List,#PB_Ignore,#PB_Ignore,GetGadgetState(#splitter),#PB_Ignore)
SetGadgetAttribute(#AreaList,#PB_ScrollArea_InnerWidth,GetGadgetState(#splitter))
Else
ResizeGadget(#List,#PB_Ignore,#PB_Ignore,#SplitterWidth,#PB_Ignore)
SetGadgetAttribute(#AreaList,#PB_ScrollArea_InnerWidth,#SplitterWidth)
EndIf
EndSelect
Case #PB_Event_GadgetDrop
Select EventGadget()
Case #List
AddGadgetItem(#List,-1,EventDropText())
EndSelect
EndSelect
ForEver