Seite 2 von 4
Verfasst: 06.06.2006 20:34
von AND51
Finde ich auch. Aber man kann nicht nur Bilder und Sounds, sondern alles, was einem zwischen die Finger kommt, mit einbinden. Mit einem Mix aus CreateFile() und WriteData() kann man die Datei dann wieder in eine beliebige Datei zurückschreiben.
Verfasst: 06.06.2006 20:39
von Xenos
Hmmm...
aber so was a la
Code: Alles auswählen
Global var.l
var.l = 2006
debug ?sektionxy
;...
End
DataSection
sektionxy:
Data.l var.l
EndDataSection
würde nicht gehen oder?
(Bitte hängt mich jetzt nicht an der fehlerhaften Syntax o.ä. auf, wie offensichtlich ist, bin ich kein Spezialist für die Datensektion...

Verfasst: 07.06.2006 04:41
von Kaeru Gaman
das ist von daher unfug, weil ein Data-Table daten enthält, die zur compilezeit feststehen.
variablen hingegen werden zur laufzeit verändert.
sie stehen zwar auch im datensegment und damit möglicher weise direkt neben den DATAs, werden aber eben zur laufzeit erstellt.
allerdings frage ich mich, wieso du ne variable in ne DataSection packen willst,
was hast du davon, sie zweimal im speicher zu haben?
Verfasst: 11.09.2006 16:10
von kiki
So,?
Code: Alles auswählen
DataSection ;ab heir werden Bilder und andere Dateien eingebunden
MeinBild: IncludeBinary "C:\Bild.bmp"
EndDataSection
If OpenWindow(0, 100, 100, 500, 300, "PureBasic - Image")
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Repaint
LoadImage(1, MeinBild , 0)
DrawImage(1, 20, 10)
EndIf
Until EventID = #PB_Event_CloseWindow ; If the user has pressed on the close button
EndIf
End ; All the opened windows are closed automatically by PureBasic
Verfasst: 11.09.2006 16:16
von AND51
Nein, nicht LoadImage(), sondern CatchImage()!
Außerdem: Warum lädst du das Bild bei jedem Schleifendurchlauf neu?
Ein CatchImage() direkt unter die DataSection, das war's.
Das gecatchte Bild kannst du natürlich auch in ein Imagegadget() schieben, wenn du willst, zeichnen find ich persönlich nicht so toll.
Verfasst: 11.09.2006 16:21
von Kaeru Gaman
außerdem braucht man vor Draw-befehlen ein StartDrawing()...
Verfasst: 11.09.2006 16:22
von AND51
Überdies übernimmt Windows das neuzeichnen von (Image-)Gadgets, was du sonst manuell machen musst...
Verfasst: 12.09.2006 15:25
von kiki
es klappt immernoch nicht
Code: Alles auswählen
DataSection ;ab heir werden Bilder und andere Dateien eingebunden
MeinBild: IncludeBinary "C:\bild.bmp"
EndDataSection
If OpenWindow(0, 100, 100, 500, 300, "PureBasic - Image")
CatchImage(1, ?MeinBild , 0)
FreeImage(1)
CreateImage(1, 40, 80 , 10)
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow ; If the user has pressed on the close button
EndIf
Verfasst: 12.09.2006 15:35
von Rubiko
Code: Alles auswählen
DataSection ;ab heir werden Bilder und andere Dateien eingebunden
MeinBild: IncludeBinary "c:\bild.bmp"
EndDataSection
If OpenWindow(0, 100, 100, 500, 300, "PureBasic - Image")
CatchImage(1, ?MeinBild , 0)
CreateGadgetList(WindowID(0))
ImageGadget(0, 10, 10, 50, 50, ImageID(1))
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow ; If the user has pressed on the close button
EndIf
Verfasst: 12.09.2006 15:40
von Kaeru Gaman
du solltest zu den neuen befehlen, die du einbaust, auch zumindest kurz die help lesen, und etwas logisch vorgehen.
CatchImage() erzeugt ein neues Bild und füllt es mit den daten in der DATA-Sec.
FreeImage() löscht ein Image aus dem Speicher.
CreateImage() erzeugt ein neues, leeres Image.
letzteres hast du wahrscheinlich falsch interpretiert.
ein Image zu haben bedeutet nur, es im speicher zu haben.
wenn du es auf dem bildschirm sehen willst, musst du es auch darstellen.
das wolltest du zuvor mit DrawImage() machen, wäre ja ein weg.
wenn du aber wie von AND vorgeschlagen ein ImageGadget benutzen willst,
dann musst du auch ein Gadget erzeugen.
schau mal in die Help zu ImageGadget.
und schau auch in CreateGadgetList.
PS:
@Rubiko
vielen dank.
wenn man den leuten ständig code vorkaut,
muss man sich nicht wundern,
wenn dauernd welche angeschissen kommen "Ey, gib ma Code"
deinen Beitrag empfand ich nun als wirklich contraduktiv,
da er nicht im mindesten zum selber denken angeregt hat.