Seite 1 von 1

Bildanzeige im Imagegadget

Verfasst: 21.12.2012 18:31
von ProgOldie
Hallo,

ich möchte mit PB5.0 auf VISTA ein Bild laden und im Fenster #ActorsWin als z.B. 30x30 Kachel in einem Imagegadget anzeigen. Zunächst 'mal möchte ich dazu erst einmal das Originalbild überhaupt anzeigen.

Code: Alles auswählen

If ImNr=LoadImage(#PB_Any, FileName)
    SetActiveWindow(#ActorsWin)
    ImGadget=ImageGadget(#PB_Any,0,0,40,40,ImNr,#PB_Image_Border)     
    SetGadgetState(ImGadget,ImNr)      
  Else
     MessageRequester("Image Viewer","Could not load image: "+FileName)
  EndIf 
Leider funktioniert allein schon das obige überhaupt nicht. Nach der erfolgreichen Auswahl des Bildes erscheint lediglich ein Rahmen, allerdings im falschen Fenster.
Wenn ich die Lösung hätte, wie muss ich es anstellen, damit ich statt des Originalbildes im Gadget nur eine 30*30-Kachel desselben erhalte? Erst eine Kopie des geladenen Bildes und diese dann resizen?

Vielleicht findet Ihr trotz der unbändigen Lust zum Testen der tollen neuen Version 5.10 Zeit zur Beantwortung.

Re: Bildanzeige im Imagegadget

Verfasst: 21.12.2012 20:09
von STARGÅTE
Wie die meisten Befehle, die nicht direkt zur Image-Lib gehören, möchte auch ImageGadget() und SetGadgetState eine ImageID() und nicht die Image-Nummer.

Desweiteren erzeugt "ImNr=LoadImage(#PB_Any, FileName)" immer eine falsche Aussage, denn ImNr ist zum Zeitpunkt des vergleichs 0 und LoadImage gibt eine Nummer zurück.

Code: Alles auswählen

If ImNr=3
	Debug ImNr
Else
	Debug "ImNr ist immer noch "+Str(ImNr)
EndIf
Außerdem musst du UseGadgetList(WindowID()) nutzen, um weitere Gadgets hinzuzufügen:

So sollte dein Code funktionieren:

Code: Alles auswählen

ImNr=LoadImage(#PB_Any, FileName)
If IsImage(ImNr)
  UseGadgetList(WindowID(#ActorsWin))
  ImGadget = ImageGadget(#PB_Any,0,0,40,40, ImageID(ImNr), #PB_Image_Border)
  ;SetGadgetState(ImGadget, ImageID(ImNr))
Else
  MessageRequester("Image Viewer","Could not load image: "+FileName)
EndIf