was Ich damit meine STARGÅTE ist, eine Image datei die z.b. in einen Imagegadget geladen wurde und mit hilfe von Slidern gescrollt werden kann,
ähnlich wie bei Infra View einen Picture Viewer. Nun möchte Ich das Image vergrößern ab der von mir gescrollten Position wie oben in der Skizze zu sehen ist
also den im Imagegadget sichtbaren bereich.
die Sliderposition ist in meinen fall ja die anzahl der gescrollten Pixel von Image
Ich Grab ja den sichtbaren bereich aus dem geladen Image und übergebe dem Imagegadget dann das bild
Code: Alles auswählen
Procedure Im_UpdateImageGadget (*this.GadgetImage)
With *this
If IsImage(\Image\Image)
If IsImage(\QuellImage)<>0 And \SliderH\Slider<>-1 And \SliderV\Slider<>-1
FreeImage(\Image\Image)
; Slider neu anpassen an dem QuellImage
Im_SetSliderValue(\SliderH,ImageWidth(\QuellImage)*\factor,\Image\Width)
Im_SetSliderValue(\SliderV,ImageHeight(\QuellImage)*\factor,\Image\Hight)
;Position auf neu angepasten Slider setzen
SetGadgetState(\SliderH\Slider,\SliderH\Pos)
SetGadgetState(\SliderV\Slider,\SliderV\Pos)
;Position wieder Speichern
\SliderH\Pos=GetGadgetState(\SliderH\Slider)
\SliderV\Pos=GetGadgetState(\SliderV\Slider)
; Gadget Image vom QuellImage Grabben und Speichern
\Image\Image=GrabImage(\QuellImage,#PB_Any,\SliderH\Pos/\factor,\SliderV\Pos/\factor,\Width/\factor,\Hight/\factor)
;Anpassen an das ImageGadget
ResizeImage(\Image\Image,\Width,\Hight,#PB_Image_Raw)
;deactivieren der Slider wenn QuellImage< oder = Groß wie Imagegadget ist
If ImageWidth(\QuellImage)*\factor<=\Image\Width
DisableGadget(\SliderH\Slider,1)
EndIf
If ImageHeight(\QuellImage)*\factor<=\Image\Hight
DisableGadget(\SliderV\Slider,1)
EndIf
Else
;deactivieren der Slider wenn kein QuellImage existiert
If \SliderH\Slider<>0 Or \SliderV\Slider<>0
DisableGadget(\SliderH\Slider,1)
DisableGadget(\SliderV\Slider,1)
EndIf
EndIf
;ausgeben an das ImageGadget
SetGadgetState(\Gadget, ImageID(\Image\Image))
EndIf
EndWith
EndProcedure
Ich hoffe das es nun verständlicher ist
gruss Silbersurfer