Seite 1 von 2

WindowCallback für 2D-Zeichnungen?

Verfasst: 12.09.2005 19:09
von Delle

Code: Alles auswählen

Window...

StartDrawing(WindowOutput()):DrawingMode(4):Box(9,61,107,157,RGB(0,0,123)):StopDrawing()

Repeat

EventID = WaitWindowEvent()
     If EventID=#PB_Event_CloseWindow:End:EndIf

Forever
Sobald man das Fenster verkleinert und wieder groß macht, ist die Box weg... bei dem 2D-Draw-Beispiel bleiben die Sachen aber stehen...

Muss da in die Schleife noch ein Callback oder sowas?

Verfasst: 12.09.2005 20:06
von NicTheQuick
Wenn du mittels [c]WindowOutput()[/c] aufs Fenster malen willst, musst
du dir natürlich einen Callback anfertigen, der die Bilddaten immer wieder
auffrischt, wenn ein Fenster darüber verschoben wurde oder ähnliches.
Einfacher geht es allerdings mit einem [c]ImageGadget()[/c]

Verfasst: 12.09.2005 20:23
von Delle
Hm, hab schon einen Callback drin für PURECOLOR... wie muss der aussehen, damit er "neutral" für das ganze Fenster gilt?

Verfasst: 12.09.2005 20:54
von vonTurnundTaxis
NicTheQuick hat geschrieben:Einfacher geht es allerdings mit einem [c]ImageGadget()[/c]
Einfacher und besser.

Verfasst: 12.09.2005 21:03
von Delle
Also nur einen Rahmen als Bild?

Verfasst: 12.09.2005 21:10
von vonTurnundTaxis
Wie meinen?
Ein ImageGadget kann doch Images anzeigen.
Und auf Images kannst du problemlos zeichnen.
(Dann darf man aber nicht vergessen, das ImageGadget mit SetGadgetState(ImageID) zu aktualisieren.)

Verfasst: 12.09.2005 21:17
von Delle
Das funzt auch wieder nicht... der Rand soll für ein ListIconGadget sein,
jetzt wird der Rahmen zwar schön aktualisiert, dafür verschwindet das ListIconGadget darüber ;)

Code: Alles auswählen

...

ImageGadget(#listrand,9,61,107,157,Rand)
ListIconGadget(#liste,8,60,130,160,"",110)

Repeat

SetGadgetState(#listrand,Rand)

Forever

Verfasst: 12.09.2005 21:17
von nco2k
am meisten lernt man immernoch aus beispielcodes:

Code: Alles auswählen

#Width = 640
#Height = 480

If OpenWindow(0, 0, 0, #Width, #Height,  #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Test")
  
  If CreateGadgetList(WindowID(0))
  
    If CreateImage(0, #Width, #Height)
      
      If StartDrawing(ImageOutput())
        
        For i = 0 To 1000
          Box(Random(#Width), Random(#Height), Random(#Width), Random(#Height), RGB(Random(255), Random(255), Random(255)))
        Next
        
        StopDrawing()
        
        ImageGadget(0, 0, 0, #Width, #Height, ImageID())
        
        Repeat
          WinEvent.l = WaitWindowEvent()
        Until WinEvent = #PB_Event_CloseWindow
        
      EndIf
      
    EndIf
    
  EndIf
  
EndIf

End
hoffe es hilft. :wink:

c ya,
nco2k

Verfasst: 12.09.2005 21:28
von Delle
Prinzip verstanden, nur wiegesagt lassen sich die Inhalt des Gadgets darüber dann nicht mehr anklicken .-(

Verfasst: 12.09.2005 21:38
von Delle
Zeigt alles korrekt an, Items leider nicht anklickbar:

Code: Alles auswählen

ImageGadget(#listrand,9,61,107,157,Rand) 
ListIconGadget(#liste,8,60,130,160,"",110)
Items anklickbar, nach Minimize allerdings fehlt das LIG:

Code: Alles auswählen

ListIconGadget(#liste,8,60,130,160,"",110)
ImageGadget(#listrand,9,61,107,157,Rand)