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...
:oops:

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 :oops:

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.