Seite 1 von 1

Fensterausschnitt wird nicht neu gezeichnet

Verfasst: 02.12.2005 00:53
von heinz.goldbach
Ich habe ein kleines Problem.
Nachdem zwei Fenster geöffnet wurden und Fenster 1 bewegt wurde, wird das Fenster 0 unter Fenster 1 nicht neu gezeichnet.
Ich habe das Problem im kurzen Programm dargestellt (.JPG muß zum Test geändert werden).


Ich habe irgendwo einmal gelesen, das es geht, ich weiß nur nicht mehr wie.
Ich bekomme es nur hin, indem ich im Original Prog ggf. beide Fenster neu zeichne. Das kann es aber nicht sein.

Wenn es auch für viele einfach ist, aber Ich "mache" erst seit vier Tagen in PB. (Es gibt leider keine "blutige" Anfänger Rubrik im Forum)

Code: Alles auswählen

UseJPEGImageDecoder()  
LoadImage (0,"C:\Dokumente und Einstellungen\Maier\Eigene Dateien\PureBasic\bild001.jpg") ; Muß geändert werden
ExamineDesktops()
XAufloesung= DesktopWidth(0) 
YAufloesung= DesktopHeight(0) 
If OpenWindow(0, 0, 0  ,XAufloesung,YAufloesung, #PB_Window_BorderLess|#PB_Window_SystemMenu  , "Fenster 0")
EndIf
If OpenWindow(1, 0, 0  ,300,200, #PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_SystemMenu   , "Fenster 1")
EndIf
UseWindow(0)
StartDrawing(WindowOutput())
DrawImage(UseImage(0), 0, 0, XAufloesung,YAufloesung)
StopDrawing()
UseWindow(1)
ActivateWindow()
If CreateGadgetList(WindowID())
     ButtonGadget  (11, 040, 040,200, 20, "Text 1")
     ButtonGadget  (12, 040, 070,200, 20, "Text 2")
     ButtonGadget  (13, 040, 100,200, 20, "Text 3")
EndIf
Repeat
     ActivateWindow()     
     EventID = WaitWindowEvent()
     Select EventID
        Case #PB_Event_Gadget
        Select  EventGadgetID()
           Case 11 : ; Case 1 
           Case 12 : ; Case 2
           Case 13 : ; Case 3
           Case 99: 
        EndSelect
     EndSelect
Until EventID = #PB_Event_CloseWindow Or (MenuauswahlZahl.b > 0)  
CloseWindow(1)
CloseWindow(0)

End

Verfasst: 02.12.2005 01:21
von AND51
Maier, ich kenne zwar den "Profi befehl" nicht, denn der geht irgendwie mit MSDN Library von MS Windows und so... Name "Repaint" ode so Ähnlich, da sollte hier mal ein Fachmann oder ein Experte posten.

Ansonsten versuchs einfach mal, indem du nur die Gadgets neu zeichneest, nicht gleich das ganze fenste, die Methode hat mir auch schon mal geholfen.

Verfasst: 02.12.2005 03:48
von Falko
Noch nicht ganz, aber fast (nach loslassen der linken Maustaste)

Code: Alles auswählen

UseJPEGImageDecoder() 
LoadImage (0,"C:\Dokumente und Einstellungen\Maier\Eigene Dateien\PureBasic\bild001.jpg") ; Muß geändert werden
ExamineDesktops()
XAufloesung= DesktopWidth(0)
YAufloesung= DesktopHeight(0)
If OpenWindow(0, 0, 0  ,XAufloesung,YAufloesung, #PB_Window_BorderLess|#PB_Window_SystemMenu  , "Fenster 0")
EndIf
If OpenWindow(1, 0, 0  ,300,200, #PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_SystemMenu   , "Fenster 1")
EndIf
UseWindow(0)
StartDrawing(WindowOutput())
DrawImage(UseImage(0), 0, 0, XAufloesung,YAufloesung)
StopDrawing()
UseWindow(1)
ActivateWindow()
If CreateGadgetList(WindowID())
     ButtonGadget  (11, 040, 040,200, 20, "Text 1")
     ButtonGadget  (12, 040, 070,200, 20, "Text 2")
     ButtonGadget  (13, 040, 100,200, 20, "Text 3")
EndIf
Repeat
     ActivateWindow()     
     EventID = WaitWindowEvent()
      Select EventID
         Case  #PB_Event_MoveWindow 
            UseWindow(0)
            StartDrawing(WindowOutput())
            DrawImage(UseImage(0), 0, 0, XAufloesung,YAufloesung)
            DrawingMode(2)
            StopDrawing()
            UseWindow(1)
        Case #PB_Event_Gadget 
         Select  EventGadgetID()
           Case 11 : ; Case 1
           Case 12 : ; Case 2
           Case 13 : ; Case 3
           Case 99:
        EndSelect
     EndSelect
Until EventID = #PB_Event_CloseWindow Or (MenuauswahlZahl.b > 0) 
CloseWindow(1)
CloseWindow(0)

End

Verfasst: 02.12.2005 12:36
von bobobo
das macht man so

Code: Alles auswählen

UseJPEGImageDecoder() 
LoadImage (0,"D:\Eigene Dateien\Eigene Bilder\eumel\Eumel_RotHut_II.JPG") 
; Muß geändert werden
ExamineDesktops()
XAufloesung= DesktopWidth(0)
YAufloesung= DesktopHeight(0)
If OpenWindow(0, 0, 0  ,XAufloesung,YAufloesung, #PB_Window_BorderLess|#PB_Window_SystemMenu  , "Fenster 0")
CreateGadgetList(WindowID(0))
ResizeImage(0,XAufloesung,YAufloesung,#PB_Image_Smooth)
ImageGadget(0,0,0,WindowWidth(),WindowHeight(),UseImage(0))
EndIf
If OpenWindow(1, 0, 0  ,300,200, #PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_SystemMenu   , "Fenster 1")
EndIf
;UseWindow(0)
;StartDrawing(WindowOutput())
;DrawImage(UseImage(0), 0, 0, XAufloesung,YAufloesung)
;StopDrawing()
UseWindow(1)
ActivateWindow()
If CreateGadgetList(WindowID())
     ButtonGadget  (11, 040, 040,200, 20, "Text 1")
     ButtonGadget  (12, 040, 070,200, 20, "Text 2")
     ButtonGadget  (13, 040, 100,200, 20, "Text 3")
EndIf
Repeat
     ActivateWindow()     
     EventID = WaitWindowEvent()
     Select EventID
        Case #PB_Event_Gadget
        Select  EventGadgetID()
           Case 11 : ; Case 1
           Case 12 : ; Case 2
           Case 13 : ; Case 3
           Case 99:
        EndSelect
     EndSelect
Until EventID = #PB_Event_CloseWindow Or (MenuauswahlZahl.b > 0) 
CloseWindow(1)
CloseWindow(0)

End

Verfasst: 02.12.2005 13:22
von Falko
danke bobobo :allright:

Verfasst: 02.12.2005 14:44
von heinz.goldbach
Vielen Dank!!!!
Ich hätte bestimmt Tage benötigt um auf die Lösung zu kommen (wenn überhaupt).

Verfasst: 02.12.2005 16:39
von bobobo
Steht eigentlich in der Hilfe (irgendwo)