Zu finden unter Gadget:
http://www.purebasic.com/german/documen ... event.html
Canvas Gadget Resize mit Image ?
-
- Beiträge: 390
- Registriert: 30.08.2004 09:05
- Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64 - Wohnort: Heidelberg
Re: Canvas Gadget Resize mit Image ?
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
- NicTheQuick
- Ein Admin
- Beiträge: 8675
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: Canvas Gadget Resize mit Image ?
Nein, das ist keine API. Vermutlich musst du nur einfach mal die neuste Version installieren.
- silbersurfer
- Beiträge: 174
- Registriert: 06.07.2014 12:21
Re: Canvas Gadget Resize mit Image ?
erstmal wieder ein Danke an Euch für die schnellen Hilfestellungen
der Link Andreas21 war genau richtig danke
Komisch nur das er noch nicht in der internen Hilfe drinne ist.
Jetzt klappt es wunderbar, und auch relative zügig danke NicTheQuick.
Allerdings ist da noch ein kleiner Wermutsropfen, beim Scrollen sieht man leichtes flackern der Ränder.
Scheint so als wird nicht sauber Aktualisiert, aber sonst läuft es jetzt schon mal schnell
Edit: So habe jetzt noch mal alles umgebaut,und auf den Rat von Bisonte bezüglich das Gadtget nicht mit zu Skalieren gehört
Nun gibt es kein Flackern und alles ist schnell Danke nochmal Jungs für eure Hilfe.....
hier nochmal der Testcode mit den Änderungen damit andere auch sehen was gemeint ist
der Link Andreas21 war genau richtig danke
Komisch nur das er noch nicht in der internen Hilfe drinne ist.
Jetzt klappt es wunderbar, und auch relative zügig danke NicTheQuick.
Allerdings ist da noch ein kleiner Wermutsropfen, beim Scrollen sieht man leichtes flackern der Ränder.
Scheint so als wird nicht sauber Aktualisiert, aber sonst läuft es jetzt schon mal schnell
Edit: So habe jetzt noch mal alles umgebaut,und auf den Rat von Bisonte bezüglich das Gadtget nicht mit zu Skalieren gehört
Nun gibt es kein Flackern und alles ist schnell Danke nochmal Jungs für eure Hilfe.....
hier nochmal der Testcode mit den Änderungen damit andere auch sehen was gemeint ist
Code: Alles auswählen
;Globale Variabeln
Global MImage=CreateImage(#PB_Any, 1024, 768,32)
Global CanvasZoom=1,Canvas,SliderH,SliderV
;zufalls Grafik erstellen
If StartDrawing(ImageOutput(MImage))
For t= 0 To 50
Circle(Random(1024),Random(768), Random(30), RGB(Random(255), Random(255), Random(255)))
Next
StopDrawing()
EndIf
;Fenster und deren Gadgets erstellen
If OpenWindow(0, 0 , 0, 1024, 768, "Scale Image Test !",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Canvas=CanvasGadget(#PB_Any, 0, 0, WindowWidth(0)-24, WindowHeight(0)-24,#PB_Canvas_Border)
SetGadgetAttribute(Canvas,#PB_Canvas_Image ,ImageID(Mimage))
SliderH=ScrollBarGadget(#PB_Any, 0,WindowHeight(0)-22, WindowWidth(0)-24, 20, 0, ImageWidth(MImage),GadgetWidth(Canvas))
SliderV=ScrollBarGadget(#PB_Any, WindowWidth(0)-22,0, 20,WindowHeight(0)-24, 0, ImageHeight(MImage),GadgetHeight(Canvas),#PB_ScrollBar_Vertical)
EndIf
;fügt tastaturabfrage für + und - vom Zifferblock hinzu
AddKeyboardShortcut(0,#PB_Shortcut_Add,1000)
AddKeyboardShortcut(0,#PB_Shortcut_Subtract,1001)
;Skalieren des Image und den Canvas übergeben
Procedure ScaleImage(id,factor=1)
Protected x,y,w=ImageWidth(id),h=ImageHeight(id),datei
SetGadgetAttribute(SliderH,#PB_ScrollBar_Maximum,ImageWidth(id)*CanvasZoom)
SetGadgetAttribute(SliderV,#PB_ScrollBar_Maximum,ImageHeight(id)*CanvasZoom)
x=GetGadgetState(SliderH) : y=GetGadgetState(SliderV)
Static BackupImage
If BackupImage<>0
FreeImage(BackupImage)
EndIf
BackupImage = GrabImage(id, #PB_Any, x/factor, y/factor, w/factor, h/factor)
Datei=ResizeImage(BackupImage,w,h,#PB_Image_Raw)
SetGadgetAttribute(Canvas,#PB_Canvas_Image ,Datei)
EndProcedure
; Echtzeitabfrage für die ScrollbarGadgets
Procedure SliderHandler()
Select EventGadget()
Case SliderH
;Debug GetGadgetState(SliderH)
ScaleImage(MImage,CanvasZoom)
Case SliderV
;Debug GetGadgetState(SliderV)
ScaleImage(MImage,CanvasZoom)
EndSelect
EndProcedure
BindGadgetEvent(SliderH, @SliderHandler())
BindGadgetEvent(SliderV, @SliderHandler())
;Hauptschleife
Repeat
event=WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
quit=1
Case #PB_Event_Menu
Select EventMenu()
Case 1000 ;Plus
CanvasZoom=CanvasZoom+1
ScaleImage(MImage,CanvasZoom)
Case 1001 ;Minus
If CanvasZoom>1
CanvasZoom=CanvasZoom-1
ScaleImage(MImage,CanvasZoom)
EndIf
EndSelect
EndSelect
Until Quit=1
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Re: Canvas Gadget Resize mit Image ?
ResizeImage liefert nur den Erfolg zurück. Ging somit nicht unter Mac.
Code: Alles auswählen
;Skalieren des Image und den Canvas übergeben
Procedure ScaleImage(id,factor=1)
Protected x,y,w=ImageWidth(id),h=ImageHeight(id),datei
SetGadgetAttribute(SliderH,#PB_ScrollBar_Maximum,ImageWidth(id)*CanvasZoom)
SetGadgetAttribute(SliderV,#PB_ScrollBar_Maximum,ImageHeight(id)*CanvasZoom)
x=GetGadgetState(SliderH) : y=GetGadgetState(SliderV)
Static BackupImage
If BackupImage<>0
FreeImage(BackupImage)
EndIf
BackupImage = GrabImage(id, #PB_Any, x/factor, y/factor, w/factor, h/factor)
If ResizeImage(BackupImage,w,h,#PB_Image_Raw)
SetGadgetAttribute(Canvas,#PB_Canvas_Image ,ImageID(BackupImage))
EndIf
EndProcedure
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
- silbersurfer
- Beiträge: 174
- Registriert: 06.07.2014 12:21
Re: Canvas Gadget Resize mit Image ?
Das hatte mich anfangs auch in der Hilfe irritiert, so wie du das jetzt gemacht hast mk-soft finde Ich das auch viel Logischer.ResizeImage liefert nur den Erfolg zurück. Ging somit nicht unter Mac.
Danke für den Tipp, bin ja auch noch ein Noob in PureBasic
werde deine änderung in mein Projekt übernehmen
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander