ImageGadgetModul

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

ImageGadgetModul

Beitrag von silbersurfer »

Hallo Liebe Community,

Nach dem Umstieg von BlitzBasic auf PureBasic und langen Studieren der Hilfe sowie
etliche Fragen hier im Forum habe Ich mein erstes kleines Projekt fertiggestellt.
Wodurch Ich viel über die eigenheiten von Purbasic, seiner Pointer Structuren und Proceduren gelernt habe. An dieser Stelle ein Danke an das Forum hier für die Fachliche Hilfe.

Ich hoffe Ihr zerreist mich nicht gleich in der Luft :lol: aber dennoch möchte Ich euch das Modul hier Vorstellen, um Fehler ,Ideen oder Verbesserungen von euch aufgezeigt zu bekommen

Zum Modul selbst:
; Befehlsübersicht
;
; Im_SetSliderValue (Slider,Maximum,Page[,Minimum])
; Im_SetSliderPos (Slider,Position)
; Im_GetSliderPos (Slider)
;
; Im_NewImageGadget (X Position, Y Position,Breite,Höhe[,Image, Scrollbar,Rahmen])
; Im_SetFactorToGadget (Gadget,Scalierung[,flag]) Flag=#PB_Image_Raw/#PB_Image_Smooth

; Im_SetImageToGadget (Gadget,Image[,flags])
; 1=setzt Image Propotional 2=fit Image to Gadget 3=fit Gadget to Image 4=cut Image to Gadget
;
; Im_GraImagetoGadget (Gadget,Image,X Position,Y Position[,Breite,Höhe])
; Breite und Höhe sind Optional wenn diese gesetzt werden passt sich das Gadget der größe an

; Im_LinkImageToGadget (Gadget,Image)
; verlinkt ein Image zum Gadget, wird für Slider oder Zoom benötigt

; Im_HideImageGadget (Gadget,flags) 0/1=Sichtbar/versteckt
;
; Im_ResizeImageGadget (Gadget,X Position,Y Position ,Breite,Höhe)
; wenn die breite oder höhe <> #PB_Ignore ist Muß das Image wieder neu gesetzt werden
; mit Im_SetImageToGadget ausser es wurde Im_LinkImageToGadget benutzt

; Im_SetBackcolorGadget (Gadget,Color)
; Im_UpdateImageGadget (Gadget)
; Im_GetSliderImageGadget (Gadget,Slider) Slider=#SliderH\#SliderV

Code: Alles auswählen

EnableExplicit

UseJPEGImageDecoder() 
;hier ein Image Laden (Minimum 1024*768)
Define Bild.s=OpenFileRequester("Bild Datei Laden Minimum 1024*768 größe !", "", "*.jpg",0)
Define OrginalImage=LoadImage(#PB_Any,Bild.s)
;Define OrginalImage=LoadImage(#PB_Any,"d:\Grafik\Bilder&Filme\unreal.bmp")

Dim sGadget(5)

If OpenWindow(0, 0, 0, 855, 600, "ImageGadget Modul v0.8 ", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	;Gadget 1
	sGadget(0)= Im_NewImageGadget(#PB_Any,10,30, 200,200,1,0,#PB_Image_Raised)
	TextGadget(0, 10,  0, 200, 30, "ImageGadget mit erhobenen Rahmen und SetImageToGadget=1 (Fit Proportional)", #PB_Text_Center)
	;Im_ResizeImageGadget(sGadget(0),0,30,100,#PB_Ignore)
	Im_SetImageToGadget(sGadget(0),OrginalImage,1)
	; Gadget 2
	sGadget(1)= Im_NewImageGadget(#PB_Any,220,30, 200,200,1,0,#PB_Image_Border)
	TextGadget(1, 220,  0, 200, 30, "ImageGadget mit vertieften Rahmen und SetImageToGadget=2 (Fit to Gadget)", #PB_Text_Center)
	Im_SetImageToGadget(sGadget(1),OrginalImage,2)
	; Gadget 3 
	sGadget(2)= Im_NewImageGadget(#PB_Any,430,30, 202,202,1,0)
	TextGadget(2, 430,  0, 200, 30, "ImageGadget ohne Rahmen und GrabImageToGadget ", #PB_Text_Center)
	Im_GraImagetoGadget(sGadget(2),OrginalImage,700,0)
	; Gadget 4
	sGadget(3)= Im_NewImageGadget(#PB_Any,640,30, 80,80,1)
	TextGadget(3, 640,  0, 200, 30, "ImageGadget ohne Rahmen und GrabImageToGadget mit Breite/höhe ", #PB_Text_Center)
	Im_GraImagetoGadget(sGadget(3),OrginalImage,700,200,202,202)
	; Gadget 5
	sGadget(4)= Im_NewImageGadget(#PB_Any,10,270, 410,300,1,1)
	TextGadget(4, 10,  250, 410, 30, "ImageGadget ohne Rahmen mit Slider und LinkImageToGadget ", #PB_Text_Center)
	Im_LinkImageToGadget(sGadget(4),OrginalImage)
 	Im_ResizeImageGadget(sGadget(4),10,270,#PB_Ignore,#PB_Ignore)
 	; Gadget 6
 	Define scale.f=2.0
	sGadget(5)= Im_NewImageGadget(#PB_Any,430,270, 410,300,1,1,#PB_Image_Raised)
	TextGadget(5, 430,  250, 410, 30, "ImageGadget mit Rahmen sowie Slider und LinkImageToGadget mit Scale=2", #PB_Text_Center)
	Im_LinkImageToGadget(sGadget(5),OrginalImage)	
	Im_SetScaleToGadget(sGadget(5),scale)	
	ButtonGadget(6, 430,574, 200, 20, "Zoom In")
	ButtonGadget(7, 640,574, 200, 20, "Zoom Out")
EndIf 

Repeat
	Define Event=WaitWindowEvent()	
	If event = #PB_Event_CloseWindow
		Define Quit=#True
	EndIf 
	If event=#PB_Event_Gadget
		Select EventGadget()
			Case sGadget(0)
				Debug "GadgetID="+sGadget(0)
			Case sGadget(1)
				Debug "GadgetID="+sGadget(1)
			Case 6 ;button Zoom In
				scale+0.1 
				If scale>40 : scale=40 : EndIf
				Im_SetScaleToGadget(sGadget(5),scale)
			Case 7	;button Zoom Out
				scale-0.1
				If scale<0.1 : scale=0.1 : EndIf 
				Im_SetScaleToGadget(sGadget(5),scale)	
		EndSelect 
	EndIf 
	
Until  Quit=#True

Hier der Download zum ImageGadgetModul
Bild
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander