Seite 1 von 2

CatchImage?

Verfasst: 07.04.2007 19:19
von by night
Hallo zusammen,

Ganz kurze Frage: Bis vor 2 Tagen konnte ich noch Bilder in meine .exe einbinden. Jetzt habe ich es aber irgwendwie vergessen, wie das noch funktioniert <) Ich weiß nicht mehr ob man das mit CatchImage oder mit Include macht. Oder doch mit beidem? Die Hilfe hilft mir nicht viel weiter.



MfG

Verfasst: 07.04.2007 19:46
von ts-soft
Wahrscheinlich mit beidem :wink:

Code: Alles auswählen

DataSection
  Bild: ; label
  IncludeBinary #PB_Compiler_Home + "Examples\Sources\Data\PureBasicLogo.bmp"
  ;IncludeBinary "MeinBild.bmp"
EndDataSection

If OpenWindow(0, #PB_Ignore, #PB_Ignore, 381, 68, "CatchImage - Example")
  Define.l MyImage
  MyImage = CatchImage(#PB_Any, ?Bild) ; Bild aus datasection catchen, bei Label Bild
  
  If MyImage And CreateGadgetList(WindowID(0))
    ImageGadget(0, 0, 0, 381, 68, ImageID(MyImage))
  EndIf
  
  While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
EndIf

Verfasst: 07.04.2007 20:02
von by night
Da werde ich auch nicht schlau draus :( Gibt es nicht eine einfachere Möglichkeit oder irre ich mich da?


/edit: Also zuerst das Bild mit "IncludeBinary" einbinden. Doch den Teil danach verstehe ich nicht.

Code: Alles auswählen

If OpenWindow(0, 0, 0, 300, 240, "*****", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered) And CreateGadgetList (WindowID(0))
   LoadImage(0, "c:\****.bmp")
   ImageGadget(1, 10, 10, 280, 60, ImageID(0))
   TextGadget(2, 10, 80, 280, 60, "Prey erzählt die Geschichte von Tommy, einem Cherokee, der in einem Reservat festsitzt. Sein Leben ändert sich schlagartig, als eine Macht aus einer anderen Welt seine vergessen geglaubten spirituellen Kräfte erweckt ...", #PB_Text_Border)
   StringGadget(3, 50, 160, 200, 20, "                   ", #PB_String_ReadOnly)
   TextGadget(4, 10, 200, 280, 30, " <3 ts-soft <3", #PB_Text_Border)
EndIf
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow

So habe ich es bisher gemacht. Doch damit bindet er das Bild ja nicht ein.

Verfasst: 07.04.2007 20:20
von 50-Pfennig
also mit

Code: Alles auswählen

IncludeBinary"image.bmp"
lädts du das Bild ja erstmal in den physikalischen Speicher vom Executable.
So, und wenn du das Bild jetzt benutzen willst, dann musst es mit CatchImage(.., ...) machen. Also

Code: Alles auswählen

CatchImage(0, ?label) ; So damit haste jetzt die ID vom Bild, und kannst dann das Bild benutzen

StartDrawing(ScreenOutput())
 DrawImage(UseImage(0), 50, 50) ; Und das Bild zeichnen
StopDrawing() 
Wenn du die Datei dann als Executable kompilierst, is das Bild eingebunden, und brauchst es nicht mit der Exe-Datei liefern.

Verfasst: 07.04.2007 20:22
von ts-soft
>> Doch damit bindet er das Bild ja nicht ein.
Entweder LoadImage, also aus einer Datei, oder CatchImage, also aus einer
Datasection der Exe. Bei CatchImage ist die Adresse des Labels anzugeben,
das macht man durch voranstellen eines Fragezeichens.

Verfasst: 07.04.2007 22:12
von by night
50-Pfennig hat geschrieben:also mit

Code: Alles auswählen

IncludeBinary"image.bmp"
lädts du das Bild ja erstmal in den physikalischen Speicher vom Executable.
So, und wenn du das Bild jetzt benutzen willst, dann musst es mit CatchImage(.., ...) machen. Also

Code: Alles auswählen

CatchImage(0, ?label) ; So damit haste jetzt die ID vom Bild, und kannst dann das Bild benutzen

StartDrawing(ScreenOutput())
 DrawImage(UseImage(0), 50, 50) ; Und das Bild zeichnen
StopDrawing() 
Wenn du die Datei dann als Executable kompilierst, is das Bild eingebunden, und brauchst es nicht mit der Exe-Datei liefern.
Und anstatt DrawImage kann ich dann ImageGadget benutzen?

Verfasst: 07.04.2007 22:19
von edel
Ja , aber dann statt useimage (gibt es unter 4 nicht mehr ) ImageID
benutzen.

Verfasst: 07.04.2007 23:20
von by night
Damit ich das verstehe, versuche ich mich jetzt einfach mal hier im Board am Code:

- OpenWIndow
- CreateGadgetList
- CatchImage
- ImageGadget

So?


/edit: Tu mich da glaube ich gerade ein bisschen schwer. Ein Beispielwäre toll.Damit ich weiß wie das aufgebaut wird <)

Verfasst: 07.04.2007 23:38
von Fluid Byte
Wo ist den jetzt noch das Problem?

ts-soft hat ein einwandfreies Beispiel gepostet das genau das tut wonach du gerade fragst.

Kurzform:

Code: Alles auswählen

DataSection
	Bild: IncludeBinary #PB_Compiler_Home + "Examples\Sources\Data\PureBasicLogo.bmp"
EndDataSection

OpenWindow(0,0,0,381,68,"CatchImage - Example",#PB_Window_SystemMenu | 1)
CreateGadgetList(WindowID(0))
ImageGadget(0,0,0,381,68,CatchImage(0,?Bild))

While WaitWindowEvent() ! 16 : Wend

Verfasst: 07.04.2007 23:51
von by night
So habe ich es verstanden.

Danke für die Hilfe!