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
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
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
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!