Alternative zu ImageGadget/WindowedScreen für Malprogramm
-
- Beiträge: 752
- Registriert: 14.09.2004 21:39
- Kontaktdaten:
Alternative zu ImageGadget/WindowedScreen für Malprogramm
Für ein Malprogramm ist es nötig, dass ich sämtliche Ereignisse der Mouse abfangen und auf einer beständigen Fläche dennoch ein Bild behalten kann. ImageGadget funktioniert ja bekanntlich nicht, auch die passenden Beispiele aus dem CodeArchiv von www.purearea.net funktionieren auf meinem Windows 2000 nicht. Die zweite Variante wäre ein Windowed Screen, was aber auch wesentlich mehr RAM erbrauchen würde. Daher suche ich nach einer passenden Alternative, die Nachrichten abfangen, aber auch leicht bemalt werden kann. Aber ich denke, ich muss auf Screens ausweichen...
Was geht denn da nicht????
Code: Alles auswählen
Enumeration
#Window_0
#Image_0
#Image
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 0, 0, 1200, 800, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
If CreateGadgetList(WindowID())
ImageGadget(#Image_0,0,0,WindowWidth(),WindowHeight(),#Image)
EndIf
EndIf
EndProcedure
Open_Window_0()
CreateImage(#Image,WindowWidth(),WindowHeight())
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
Debug event
;eventwParam() und eventlParam() sidn nicht dokumentiert, funktionieren aber trotzdem.
Debug EventwParam()
Debug EventlParam()
If Event=#PB_Event_SizeWindow
ResizeGadget(#Image_0,0,0,WindowWidth(),WindowHeight())
CreateImage(#Image,WindowWidth(),WindowHeight())
EndIf
WindowID = EventWindowID() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadgetID() ; Is it a gadget event?
EventType = EventType() ; The event type
;Debug eventtype
;You can place code here, and use the result as parameters for the procedures
StartDrawing(ImageOutput())
If event=13100 ; Klick auf Image
malmal=1
EndIf
If event=514 ; linke Maustaste UP
malmal=0
EndIf
If malmal=1
;Box(0, 0, WindowWidth(),WindowHeight(),RGB(64,0,64))
Circle(WindowMouseX(),WindowMouseY(),5,RGB(255,0,0))
EndIf
StopDrawing()
SetGadgetState(#Image_0,UseImage(#Image))
Until Event = #PB_Event_CloseWindow Or EventType=#PB_EventType_RightClick
; End of the event loop
End
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.