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

Anfängerfragen zum Programmieren mit PureBasic.
haggi
Beiträge: 77
Registriert: 04.01.2007 21:54

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

Beitrag 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
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag 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?
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
haggi
Beiträge: 77
Registriert: 04.01.2007 21:54

Danke für eure schnellen Antowrten und beispiele!

Beitrag 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
Antworten