Bild anzeigen

Anfängerfragen zum Programmieren mit PureBasic.
Freizeitcoder
Beiträge: 35
Registriert: 24.09.2009 13:31
Wohnort: München

Bild anzeigen

Beitrag von Freizeitcoder »

Hallo zusammen,

ich würde gerne bei einer Datenbank Bilder zu den angewählten Bauteilen einblenden. Ich will aber die Bilder nur optional hinzufügen, "IncludeBinary" fällt also aus. Ein eigenes kleines Screen für "Startdrawing" und "Enddrawing" wollte ich mir eigentlich auch nicht antun.
Gibt es eine Möglichkeit nur bei Bedarf ein Photo in meine Anwendung zu laden, und es einfach ganz billig dort abzulegen, ohne Flip, Refresh oder sonstigem Spielschleifenaufwand? Das Bild sollte zudem auswechselbar bleiben.

Wäre dankbar für Hilfe. Obwohl ich schon einige neue Befehle durchgelesen und teilweise ausprobiert habe, wäre langsam eine Lösung schon nicht schlecht. ;)
Gruß
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Bild anzeigen

Beitrag von ts-soft »

Code: Alles auswählen

EnableExplicit

UsePNGImageDecoder()
UseJPEGImageDecoder()

Define PicPath.s

OpenWindow(0, #PB_Ignore, #PB_Ignore, 400, 440, "Bildviewer", #PB_Window_SystemMenu)

ImageGadget(0, 10, 10, 380, 380, 0, #PB_Image_Border)
ButtonGadget(1, 160, 410, 80, 20, "Bild laden")

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
      
    Case #PB_Event_Gadget
      If EventGadget() = 1
        PicPath = OpenFileRequester("Bild laden", "*.bmp", "*.*", 0)
        If PicPath
          If LoadImage(0, PicPath)
            ResizeImage(0, 380, 380)
            SetGadgetState(0, ImageID(0))
          EndIf
        EndIf
      EndIf
  EndSelect
  
ForEver
Freizeitcoder
Beiträge: 35
Registriert: 24.09.2009 13:31
Wohnort: München

Re: Bild anzeigen

Beitrag von Freizeitcoder »

Super Danke. Genau das hatte ich mir vorgestellt.

Hm...diese Funktion muß ich wohl als letztes einbauen. Bei jeder Generation des SourceCodes schreibt VD einen riesigen Ratenschwanz mit CatchImage, IncludeBinary usw. in den Code ;( Das hat mich dann auch auf den Holzweg geschickt!

Zwei Fragen habe ich noch zu der Lösung:
1) Wieso meckert der Debuger nicht, obwohl du bei "ImageGadget" eine 0 anstatt der "ImageID" angibst?

Code: Alles auswählen

ImageGadget(0, 10, 10, 380, 380, 0, #PB_Image_Border)
2) Zu welchem Zweck muß ich den Status des ImageGadgets ändern? Und wieso übergibst Du als Status die ImageID?

Code: Alles auswählen

If LoadImage(0, PicPath)
            ResizeImage(0, 380, 380)
            SetGadgetState(0, ImageID(0))
          EndIf
Gruß
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Bild anzeigen

Beitrag von ts-soft »

Freizeitcoder hat geschrieben:Super Danke. Genau das hatte ich mir vorgestellt.

Hm...diese Funktion muß ich wohl als letztes einbauen. Bei jeder Generation des SourceCodes schreibt VD einen riesigen Ratenschwanz mit CatchImage, IncludeBinary usw. in den Code ;( Das hat mich dann auch auf den Holzweg geschickt!
Wie gesagt, versuch es lieber ohne VD, der ist Buggy und ohne lernste viel mehr.
Hab schon ewig kein VD mehr genutzt.
Freizeitcoder hat geschrieben: 1) Wieso meckert der Debuger nicht, obwohl du bei "ImageGadget" eine 0 anstatt der "ImageID" angibst?

Code: Alles auswählen

ImageGadget(0, 10, 10, 380, 380, 0, #PB_Image_Border)
Bei einer 0 weiß er das nichts einzufügen ist. Ist ja keine ImageID(0), sondern ein Händel, das kann nicht 0 sein.
Freizeitcoder hat geschrieben: 2) Zu welchem Zweck muß ich den Status des ImageGadgets ändern? Und wieso übergibst Du als Status die ImageID?

Code: Alles auswählen

If LoadImage(0, PicPath)
            ResizeImage(0, 380, 380)
            SetGadgetState(0, ImageID(0))
          EndIf
Gruß
Mit SetGadgetState ändere ich das Bild im ImageGadget!
Der Rest steht in der Hilfe :wink:

Gruß
Thomas
Antworten