Fensterausschnitt wird nicht neu gezeichnet

Anfängerfragen zum Programmieren mit PureBasic.
heinz.goldbach
Beiträge: 93
Registriert: 16.11.2005 18:27
Wohnort: Neuss

Fensterausschnitt wird nicht neu gezeichnet

Beitrag 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
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag 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
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

danke bobobo :allright:
Bild
Win11 Pro 64-Bit, PB_6.11b1
heinz.goldbach
Beiträge: 93
Registriert: 16.11.2005 18:27
Wohnort: Neuss

Beitrag von heinz.goldbach »

Vielen Dank!!!!
Ich hätte bestimmt Tage benötigt um auf die Lösung zu kommen (wenn überhaupt).
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Steht eigentlich in der Hilfe (irgendwo)
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten