Seite 1 von 1

gibt es die möglichkeit, bilder im hintergrund zu laden?

Verfasst: 25.10.2007 01:54
von haggi
Hallo leute, ich habe mal wieder eine frage:

gibt es ne möglichkeit, ein bild (welches unter umständen relativ groß(ca 3MB) ist im hintergrund zu laden? also z.b. dass er andere prozesse bearbeitet? oder dass wenn ich mit der tastatur arbeite, die entsperechenden befehle gespeichert werden. ziel ist es, bilder in eine liste auch dann hinzufügen zu können, während gerade das bild geladen wird. ich habe momentan das problem, dass er die befehle immer erst später verarbeitet, und so fehler in der liste auftreten, dass z.b. die bilder in der mitte nicht geladen werden, und dass letzte ausgewählte bild dafür mehrfach (in anzahl der nichterschinenen bilder + seinem eigenen) angezeigt wird.

hoffe ihr könnt mir helfen! danke schon im voraus haggi

Verfasst: 25.10.2007 07:49
von gnasen
Ich habe noch nicht ganz das Problem verstanden, also du meinst, dass du große Bilder lädst, die dann in einer Liste nicht komplett angezeigt werden, weil sie noch am laden sind?

Oder du willst Bilder im Hintergrund laden? zB mit Hilfe eines Threads?

Verfasst: 25.10.2007 12:51
von bobobo
kennzte threads?

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Button_0
  #Text_0
  #Button_1
EndEnumeration

Enumeration
  #Image
EndEnumeration

Global geladen.l

Procedure checkladen()
  SetGadgetText(#Text_0,"Bild wird geladen")
  Repeat
    Delay(1000)
    a+1
    SetGadgetText(#Text_0,"Bild wird geladen"+Str(a))
  Until geladen <>0
  SetGadgetText(#Text_0,"BILD IST GELADEN")
EndProcedure

Procedure laden()
  If LoadImage(#Image,"d:\DickesDing.bmp")
    geladen=1
  EndIf
EndProcedure

If OpenWindow(#Window_0, 216, 0, 600, 300, "deschd",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  If CreateGadgetList(WindowID(#Window_0))
    ButtonGadget(#Button_0, 40, 60, 120, 40, "Lad mal")
    TextGadget(#Text_0, 330, 110, 150, 30, "")
    ButtonGadget(#Button_1, 280, 200, 220, 50, "Ende")
  EndIf
EndIf

Repeat
  Event = WaitWindowEvent()
  WindowID = EventWindow()
  GadgetID = EventGadget()
  EventType = EventType()
  If Event = #PB_Event_Gadget
    If GadgetID = #Button_0
      CreateThread(@checkladen(),0)
      CreateThread(@laden(),0)
    ElseIf GadgetID = #Button_1
      If FreeImage(#Image)
        quit=1
      EndIf
    EndIf
  EndIf
Until Event = #PB_Event_CloseWindow Or quit=1; End of the event loop
End

Danke für eure schnellen Antowrten und beispiele!

Verfasst: 25.10.2007 14:11
von haggi
hallo Ihr beiden! danke für eure antworten und auch für das beispiel! hat mir weitergeholfen, mein projekt weiter zu schreiben! und bobobo du hast das schonrichtig erkannt! das war dass was ich wollte! werde dass mal probieren!


danke nochmal


haggi