Mahlzeit,
Ich habe mir da ein Programmchen gebaut, dass mir ein 3D Objekt rotieren lässt. Nun kann ich hier ebenfalls in den Hintergrund in das Fenster ein Bild laden, *.png oder was auch immer.
Ich bekomme es jedoch nicht so recht hin, dass ein Bild zentriert in das Fenster geladen wird. Das Tool hier, platziert das Bild immer im Fenster bei Position x=0, y=0
Ich benutz jedoch auch Schieberegler um das Bild auch noch in der Horizontalen und oder Vertikalen verschieben zu können.
Und Frage 2:
Wenn das Hintergrundbild geladen ist, habe ich einen Schieberegler der das Bild Zoomen kann.
Hier habe ich das Problem, dass das ebenfalls nicht mittig bleibt. Soll heißen, das Bild füllt meinen Hintergrund aus und nun möcht ich dieses vergößern oder verkleinern. Sobald ich den Regler betätige, wird die Skalierung auch von x=0 und y=0 begonnen und nicht aus dem mittigen Zentum des Fensters.
Hoffe ich habe mich einigermaßen verständlich ausgedrückt.
Ich nutze im Hintergrund die MP3D Lib ---> relevant? .
Ich hänge einmal Shots an
Bild in einem Fenster immer Zentriert laden - MP3D Lib relevant?
Bild in einem Fenster immer Zentriert laden - MP3D Lib relevant?
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
- jacdelad
- Beiträge: 348
- Registriert: 03.02.2021 13:39
- Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
- Wohnort: Riesa
- Kontaktdaten:
Re: Bild in einem Fenster immer Zentriert laden - MP3D Lib relevant?
Ich verstehe die Frage nicht ganz und ohne Code ist's eh schwer zu helfen. Ich bemühe mal meine Glaskugel:
Um ein Bild im Fenster zu zentrieren musst du es an (Fensterbreite-Bildbreite)/2 bzw. (Fensterhöhe-Bildhöhe)/2 positionieren. Wenn sich das Bild in der Größe ändert, wie durch deinen Schieberegler, muss die Ursprungsposition entsprechend neu berechnet werden. Aber ich vermute mal, dass dir das klar ist und ich die Frage nicht richtig verstanden habe...
Um ein Bild im Fenster zu zentrieren musst du es an (Fensterbreite-Bildbreite)/2 bzw. (Fensterhöhe-Bildhöhe)/2 positionieren. Wenn sich das Bild in der Größe ändert, wie durch deinen Schieberegler, muss die Ursprungsposition entsprechend neu berechnet werden. Aber ich vermute mal, dass dir das klar ist und ich die Frage nicht richtig verstanden habe...
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Re: Bild in einem Fenster immer Zentriert laden - MP3D Lib relevant?
na dann poste ich mal meinen Spaghetti Code. Evtl. Wird es ersichtlich. Aber mit deiner Vermutung hast du sicherlich Recht. Denn die Schieberegler sollten eigentlich bei Start alle auf Mitte stehen und nicht so verwurstet. Das jeweils geladene Bild muss ich dann /2 anpassen, das macht erst mal Sinn.
Code: Alles auswählen
EP_InitFXLib()
UsePNGImageDecoder()
InitSprite()
ExamineDesktops()
Enumeration
#Wndw
#WndSettings
EndEnumeration
Enumeration ;/ Gadget
#Gad_OpenGL
#Gad_Editor
#Gad_ShaderSelector_Combo
#Exit_btn
#Gadget_exit
#textgadget
#Infobar_Font
#InfoText
#InfoText_Font
;Objects Button Patch
#Btn_Patch
#Btn_Patch_Frame_Left
#Btn_Patch_Frame_Right
#Btn_Patch_Frame_Top
#Btn_Patch_Frame_Bottom
;Objects Button About
#Btn_About
#Btn_About_Frame_Left
#Btn_About_Frame_Right
#Btn_About_Frame_Top
#Btn_About_Frame_Bottom
;Objects Button Exit
#Btn_Exit
#Line_Shadow
#Gadget_Line_Shadow
#Btn_Exit_Frame_Left
#Btn_Exit_Frame_Right
#Btn_Exit_Frame_Top
#Btn_Exit_Frame_Bottom
;Objects Application
#Txt_Application
#Inputfield_Application
#Inputfield_Application_Frame
;Objects Website
#Txt_Website
#Inputfield_Website
#Inputfield_Website_Frame
;Objects Cracker
#Txt_Cracker
#Inputfield_Cracker
#Inputfield_Cracker_Frame
;Objects Released On
#Txt_Released_On
#Inputfield_Released_On
#Inputfield_Released_On_Frame
;Objects Info
#Txt_Info
#Inputfield_Info
#Inputfield_Info_Frame
#Supplied
#Texture
;LADE 3D Object
#Cnt_3D_Object
#Object_3DS
#Txt_Size_3D_Obj
#TrackBar_3d_Obj_Size
#Btn_Open_3ds
;FARBE 3D OBJEKT ÄNDERN
#Cnt_Object_Colors
#Txt_Object_Colors
#Txt_RGB_1
#Txt_RGB_2
#Txt_RGB_3
#Txt_RGB_4
#TrackBar_RGB_1
#TrackBar_RGB_2
#TrackBar_RGB_3
#TrackBar_RGB_4
#Box_RGB_1
#Box_RGB_2
#Box_RGB_3
#Box_RGB_4
;BACKGROUND IMAGE
#Cnt_Background_Pic
#Txt_Background_Pic
#Btn_Background_Pic
#TxT_Background_Pic_X_Pos
#TrackBar_Back_Pic_X_Pos
#TxT_Background_ScalePic_Pos
#TrackBar_Back_ScalePic
#TxT_Background_Pic_Y_Pos
#TrackBar_Back_Pic_Y_Pos
#TxT_Background_Pic_Z_Pos
#TrackBar_Back_Pic_Z_Pos
;V2M SOUNDFILE
#Cnt_Load_V2M_Music
#Txt_Load_V2M_Music
#Btn_Open_v2m
#Chk_Bounce_Object_Z_axis
#Chk_Bounce_Object_X_axis
#Chk_Bounce_Object_Y_axis
#TxT_Volume
#TrackBar_Volume
;WIREFRAME
#Chk_Wireframe
#Chk_Solid_3dObject
EndEnumeration
Define.i Event, EventWindow, EventGadget, EventType, EventMenu
Global Mesh
Procedure.i Open_3D_Object()
File.s = OpenFileRequester("open 3DS File", "3D Object\", "3DS Object File|*.3ds|3DS Object-File (*.3ds)|*.3ds", 0)
Mesh = MP_LoadMesh(File.s)
EndProcedure
Procedure.i Center(Max, Value)
ProcedureReturn (((Max) - (Value)) / 2)
EndProcedure
; Procedure.i Open_Background_Image()
;
; File.s = OpenFileRequester("Background Image", "Image\", "Graphic File|*.png|PNG Graphic-File (*.png)|*.png", 0)
; ;Background = MP_LoadMesh(File.s)
; Background = MP_LoadSprite(File.s)
; EndProcedure
Procedure.i Wnd_Settings()
If OpenWindow(#WndSettings, 616, 293, 628, 410, "3D Object Settings", #PB_Window_ScreenCentered|#PB_Window_Invisible|#PB_Window_MinimizeGadget)
StickyWindow(#WndSettings, #True)
;:DEACTIVATE CLOSE WINDOW BUTTON [X]
DeleteMenu_(GetSystemMenu_(WindowID(#WndSettings),#False),6,#MF_BYPOSITION)
;////////////////////////////////////////////////////////////////////////
;-LOAD 3D OBJECT CONTAINER
;////////////////////////////////////////////////////////////////////////
ContainerGadget(#Cnt_3D_Object, 10, 10, 132, 228, #PB_Container_Flat)
TextGadget(#Txt_Size_3D_Obj, 10, 10, 110, 15, "adjust 3DS Object Size")
ButtonGadget(#Btn_Open_3ds, 7, 33, 115, 40, "Open 3D Object")
TrackBarGadget(#TrackBar_3d_Obj_Size, 2, 95, 125, 35, 6, 1000)
SetWindowLongPtr_(GadgetID(#TrackBar_3d_Obj_Size),#GWL_STYLE,GetWindowLongPtr_(GadgetID(#TrackBar_3d_Obj_Size),#GWL_STYLE) | #TBS_BOTH| #TBS_NOTICKS)
SetGadgetState(#TrackBar_3d_Obj_Size, 135)
CheckBoxGadget(#Chk_Wireframe, 7, 140, 114, 15, "wireframe 3D Object")
DisableGadget(#Chk_Wireframe, #True)
CheckBoxGadget(#Chk_Solid_3dObject, 7, 160, 110, 15, "solid 3D Object")
DisableGadget(#Chk_Solid_3dObject, #True)
CloseGadgetList()
;////////////////////////////////////////////////////////////////////////
;-CHANGE COLOR 3D OBJECT CONTAINER
;////////////////////////////////////////////////////////////////////////
ContainerGadget(#Cnt_Object_Colors, 150, 10, 143, 228, #PB_Container_Flat)
TextGadget(#Txt_Object_Colors, 10, 10, 143, 15, "Set Colorshade for Object")
CanvasGadget(#Txt_RGB_1, 10, 34, 30, 30)
CanvasGadget(#Txt_RGB_2, 40, 34, 30, 30)
CanvasGadget(#Txt_RGB_3, 70, 34, 30, 30)
CanvasGadget(#Txt_RGB_4, 100, 34, 30, 30)
;: RANDOM COLOR ON FIRST STARTUP
Trackbar1 = Random(16581375, 0)
TrackBarGadget(#TrackBar_RGB_1, 12, 64, 30, 160, 0, 16581375, #PB_TrackBar_Vertical)
SetGadgetState(#TrackBar_RGB_1, Trackbar1)
SetWindowLongPtr_(GadgetID(#TrackBar_RGB_1),#GWL_STYLE,GetWindowLongPtr_(GadgetID(#TrackBar_RGB_1),#GWL_STYLE) | #TBS_BOTH| #TBS_NOTICKS)
If StartDrawing(CanvasOutput(#Txt_RGB_1))
Box(0,0,30,30,GetGadgetState(#TrackBar_RGB_1))
StopDrawing()
EndIf
;: RANDOM COLOR ON FIRST STARTUP
Trackbar2 = Random(16581375, 0)
TrackBarGadget(#TrackBar_RGB_2, 42, 64, 30, 160, 0, 16581375, #PB_TrackBar_Vertical)
SetGadgetState(#TrackBar_RGB_2, Trackbar2)
SetWindowLongPtr_(GadgetID(#TrackBar_RGB_2),#GWL_STYLE,GetWindowLongPtr_(GadgetID(#TrackBar_RGB_2),#GWL_STYLE) | #TBS_BOTH| #TBS_NOTICKS)
If StartDrawing(CanvasOutput(#Txt_RGB_2))
Box(0,0,30,30,GetGadgetState(#TrackBar_RGB_2))
StopDrawing()
EndIf
;: RANDOM COLOR ON FIRST STARTUP
Trackbar3 = Random(16581375, 0)
TrackBarGadget(#TrackBar_RGB_3, 72, 64, 30, 160, 0, 16581375, #PB_TrackBar_Vertical)
SetGadgetState(#TrackBar_RGB_3, Trackbar3)
SetWindowLongPtr_(GadgetID(#TrackBar_RGB_3),#GWL_STYLE,GetWindowLongPtr_(GadgetID(#TrackBar_RGB_3),#GWL_STYLE) | #TBS_BOTH| #TBS_NOTICKS)
If StartDrawing(CanvasOutput(#Txt_RGB_3))
Box(0,0,30,30,GetGadgetState(#TrackBar_RGB_3))
StopDrawing()
EndIf
;: RANDOM COLOR ON FIRST STARTUP
Trackbar4 = Random(16581375, 0)
TrackBarGadget(#TrackBar_RGB_4, 102, 64, 30, 160, 0, 16581375, #PB_TrackBar_Vertical)
SetGadgetState(#TrackBar_RGB_4, Trackbar4)
SetWindowLongPtr_(GadgetID(#TrackBar_RGB_4),#GWL_STYLE,GetWindowLongPtr_(GadgetID(#TrackBar_RGB_4),#GWL_STYLE) | #TBS_BOTH| #TBS_NOTICKS)
If StartDrawing(CanvasOutput(#Txt_RGB_4))
Box(0,0,30,30,GetGadgetState(#TrackBar_RGB_4))
StopDrawing()
EndIf
CloseGadgetList()
;////////////////////////////////////////////////////////////////////////
;-CHANGE BACKGROUND IMAGE CONTAINER
;////////////////////////////////////////////////////////////////////////
ContainerGadget(#Cnt_Background_Pic, 301, 10, 138, 278, #PB_Container_Flat)
TextGadget(#Txt_Background_Pic, 11, 10, 111, 15, "set Background Image")
ButtonGadget(#Btn_Background_Pic, 10, 33, 115, 40, "Open Image")
DisableGadget(#Btn_Background_Pic,#True)
TextGadget(#TxT_Background_Pic_X_Pos, 11, 80, 103, 15, "Image X Position:")
TrackBarGadget(#TrackBar_Back_Pic_X_Pos, 3, 95, 125, 35, 0, 2920)
SetGadgetState(#TrackBar_Back_Pic_X_Pos, 960)
SetWindowLongPtr_(GadgetID(#TrackBar_Back_Pic_X_Pos),#GWL_STYLE,GetWindowLongPtr_(GadgetID(#TrackBar_Back_Pic_X_Pos),#GWL_STYLE) | #TBS_BOTH| #TBS_NOTICKS)
TextGadget(#TxT_Background_Pic_Y_Pos, 11, 130, 103, 15, "Image Y Position:")
TrackBarGadget(#TrackBar_Back_Pic_Y_Pos, 3, 145, 125, 35, 0, 2080)
SetGadgetState(#TrackBar_Back_Pic_Y_Pos, 250)
SetWindowLongPtr_(GadgetID(#TrackBar_Back_Pic_Y_Pos),#GWL_STYLE,GetWindowLongPtr_(GadgetID(#TrackBar_Back_Pic_Y_Pos),#GWL_STYLE) | #TBS_BOTH| #TBS_NOTICKS)
TextGadget(#TxT_Background_Pic_Z_Pos, 11, 180, 103, 15, "Image Z Position:")
TrackBarGadget(#TrackBar_Back_Pic_Z_Pos, 3, 195, 125, 35, 0, 1000)
SetGadgetState(#TrackBar_Back_Pic_Z_Pos, 500)
SetWindowLongPtr_(GadgetID(#TrackBar_Back_Pic_Z_Pos),#GWL_STYLE,GetWindowLongPtr_(GadgetID(#TrackBar_Back_Pic_Z_Pos),#GWL_STYLE) | #TBS_BOTH| #TBS_NOTICKS)
TextGadget(#TxT_Background_ScalePic_Pos, 11, 230, 103, 15, "Scale Background Image:")
TrackBarGadget(#TrackBar_Back_ScalePic, 3, 245, 125, 35, 0, 1000)
;SetGadgetState(#TrackBar_Back_ScalePic, 500)
SetWindowLongPtr_(GadgetID(#TrackBar_Back_ScalePic),#GWL_STYLE,GetWindowLongPtr_(GadgetID(#TrackBar_Back_ScalePic),#GWL_STYLE) | #TBS_BOTH| #TBS_NOTICKS)
CloseGadgetList()
;////////////////////////////////////////////////////////////////////////
;-LOAD MUSIC - V2M SOUNDFILE
;////////////////////////////////////////////////////////////////////////
ContainerGadget(#Cnt_Load_V2M_Music, 448, 10, 170, 228, #PB_Container_Flat)
TextGadget(#Txt_Load_V2M_Music, 11, 10, 140, 15, "route Soundfile to 3D Object")
ButtonGadget(#Btn_Open_v2m, 9, 33, 150, 40, "Open v2m Soundfile")
DisableGadget(#Btn_Open_v2m,#True)
CheckBoxGadget(#Chk_Bounce_Object_Z_axis, 10, 80, 147, 15, "contract Object on Z Axis")
DisableGadget(#Chk_Bounce_Object_Z_axis, #True)
CheckBoxGadget(#Chk_Bounce_Object_X_axis, 10, 100, 147, 15, "contract Object on X Axis")
CheckBoxGadget(#Chk_Bounce_Object_Y_axis, 10, 120, 140, 15, "contract Object on Y Axis")
SetGadgetState(#Chk_Bounce_Object_Y_axis, #PB_Checkbox_Checked)
;: Change Volume
TextGadget(#TxT_Volume, 11, 145, 103, 15, "Volume:")
TrackBarGadget(#TrackBar_Volume, 3, 160, 155, 35, 0, 100)
;:ToDo
SetGadgetState(#TrackBar_Volume, 30)
SetWindowLongPtr_(GadgetID(#TrackBar_Volume),#GWL_STYLE, GetWindowLongPtr_(GadgetID(#TrackBar_Volume),#GWL_STYLE) | #TBS_BOTH| #TBS_NOTICKS)
CloseGadgetList()
EndIf
HideWindow(#WndSettings,#False)
EndProcedure
If OpenWindow(#Wndw, 0, 0, 1920, 1080, "3D Object 1080p Projector - Alien5ive 2020", #PB_Window_ScreenCentered|#PB_Window_Invisible|#PB_Window_SystemMenu)
SetWindowColor(#Wndw, RGB(0,0,0))
MP_ScreenToHandle( WindowID(#Wndw))
MP_SetAntialiasing(4)
; SetActiveWindow(#Wndw)
camera=MP_CreateCamera();create cam
light=MP_CreateLight(1) ;create light
x = 1
y = 1
xw = 1920 ; DEFINE WIDTH OF THE DEMO EFFECT SCREEN HERE
yw = 1080 ; DEFINE HEIGHT OF THE DEMO EFFECT SCREEN HERE
MP_Viewport(x,y,xw,yw)
;////////////////////////////////////////////////////////////////////////
;-ROUTE V2M SOUND TO LEFT and RIGHT CHANNEL
;////////////////////////////////////////////////////////////////////////
left.f ;Set var for Left Music Channel on 3D Object
right.f ;Set var for Right Music Channel on 3D Object
;////////////////////////////////////////////////////////////////////////
; SYSTEM FONTs FOR INPUTFIELDS AND HEADLINES
;////////////////////////////////////
Font1 = LoadFont(#PB_Any, "Microsoft Sans Serif", 10, #PB_Font_HighQuality)
Font2 = LoadFont(#PB_Any, "Microsoft Sans Serif", 10, #PB_Font_HighQuality)
Font3 = LoadFont(#PB_Any, "Microsoft Sans Serif", 12, #PB_Font_HighQuality)
;=================================================================================================================
HideWindow(#Wndw,#True)
EndIf
Wnd_Settings()
Repeat
Event = WindowEvent()
EventGadget = EventGadget()
EventType = EventType()
;////////////////////////////////////////////////////////////////////////
;-ROTATE 3D OBJECTS
;////////////////////////////////////////////////////////////////////////
;x1 -0.2 ;turn radial to right
;y1 + 0.0 ;turn on its own axis
;z1 - 0.0 ;turn radial to left
MP_GetMainVUV2M(@left, @right) ;stick Object to Music
;////////////////////////////////////////////////////////////////////////
;-SIZE 3D OBJECT
;////////////////////////////////////////////////////////////////////////
MP_PositionEntity (Mesh,0,0,GetGadgetState(#TrackBar_3d_Obj_Size)) ;POSITION QUBS, last number makes the size and Z Index of QUBS
;////////////////////////////////////////////////////////////////////////
;-CONTRACT 3D OBJECT on X AXIS
;////////////////////////////////////////////////////////////////////////
; ; ; ; If SetGadgetState(#Chk_Bounce_Object_X_axis, #PB_Checkbox_Checked)
; ; ; ; MP_ScaleEntity (Mesh, 0.1+left*5, 1, 1) ;wobble QUBS to music
; ; ; ; EndIf
; ; ; ; If SetGadgetState(#Chk_Bounce_Object_Z_axis, #PB_Checkbox_Checked)
; ; ; ; SetGadgetState(#Chk_Bounce_Object_X_axis, #PB_Checkbox_Unchecked)
; ; ; ; MP_ScaleEntity (Mesh, 1, 1, 0.1+left*5) ;wobble QUBS to music
; ; ; ; EndIf
; EndIf
; If GetGadgetState(#Chk_Bounce_Object_X_axis)
; SetGadgetState(#Chk_Bounce_Object_X_axis, #PB_Checkbox_Unchecked)
; SetGadgetState(#Chk_Bounce_Object_Z_axis, #PB_Checkbox_Checked)
; MP_ScaleEntity (Mesh, 1, 1, 0.1+left*5) ;wobble QUBS to music
;
; EndIf
; MP_ScaleEntity (Mesh,1,1,0.1+left*5) ;wobble QUBS to music
MP_TurnEntity (Mesh,0.3,0.9,0.3) ;spinning speed --> turn up, turn left, spin to left
;////////////////////////////////////
;-ROTATE 3D OBJECT over the whole screen
;////////////////////////////////////
; MOVE 3D OBJECT OVER THE SCREEN
; X_Add.f - 1
; Cam_SX.f = Sin((X_Add.f * #PI / 180)) * 0.9
; MP_MoveEntity (camera, Cam_SX , 0, 0)
; s.f +0.52
; MP_MoveEntity (Mesh,Cos(s),Sin(s),0);Move-Positions QUBS Object in x,y,z order
;////////////////////////////////////
MP_RenderWorld()
MP_Flip ()
;////////////////////////////////////////////////////////////////////////
;:
;: BUTTON LOAD 3DS OBJECT
;:
;////////////////////////////////////////////////////////////////////////
If EventGadget = #Btn_Open_3ds
MP_FreeEntity(Mesh)
File.s = OpenFileRequester("open 3DS File", "3D\", "3DS Object File|*.3ds|3DS Object-File (*.3ds)|*.3ds", 0)
;OpenWindow(#WndSettings, 616, 293, 628, 410, "3D Object Settings", #PB_Window_ScreenCentered|#PB_Window_Invisible)
Mesh = MP_LoadMesh(File.s)
;Mesh=MP_LoadMesh(File.s)
DisableGadget(#Chk_Solid_3dObject, #False)
DisableGadget(#Btn_Background_Pic, #False)
DisableGadget(#Btn_Open_v2m, #False)
HideWindow(#Wndw, #False)
SetGadgetState(#Chk_Wireframe, #PB_Checkbox_Checked)
DisableGadget(#Chk_Wireframe, #True)
MP_Wireframe(1) ; 1 = Wireframe
ResizeWindow(#WndSettings, 1920, 293, 628, 410 )
SetGadgetState(#Chk_Bounce_Object_Y_axis, #PB_Checkbox_Checked)
EndIf
;////////////////////////////////////////////////////////////////////////
;-LOAD AND PLAY V2M Sound
;////////////////////////////////////////////////////////////////////////
If EventGadget = #Btn_Open_v2m
MP_StopV2M(0) ;Stoppen
MP_FreeV2M() ;Player freigeben
V2M$ = OpenFileRequester("open v2m Music File", "sound\", "V2M SOUND File|*.v2m|V2M Sound-File (*.v2m)|*.v2m", 0)
MP_LoadV2M(V2M$)
MP_SetVolumeV2M(0.1)
MP_PlayV2M(0) ;0 START SOUND FROM THE BEGINNING
DisableGadget(#Chk_Bounce_Object_Z_axis, #False)
EndIf
;////////////////////////////////////////////////////////////////////////
;:
;: LOOP FUNCTION V2M SOUND
;:
;////////////////////////////////////////////////////////////////////////
If MP_IsPlayingV2M()
IsPlaying=1 ; CHECK IF SONG IS PLAYING
Else
EndOfTrackReached=1 ;IF SONG REACHED ITS END
;RESTART PLAYBACK
;Delay(1000) ; WAIT 1000 ms. AND START OVER FROM THE BEGINNING
MP_PlayV2M(0) ; 0 STARTs SONG At THE BEGINNING
EndIf
;////////////////////////////////////////////////////////////////////////
;- DISPLAY BACKGROUND PICTURE
;////////////////////////////////////////////////////////////////////////
MP_DrawSprite(Background, GetGadgetState(#TrackBar_Back_Pic_X_Pos)-WindowWidth(#Wndw)/2, GetGadgetState(#TrackBar_Back_Pic_Y_Pos)-WindowHeight(#Wndw)/2)
;;MP_DrawSprite(Background, GetGadgetState(#TrackBar_Back_Pic_X_Pos)-WindowWidth(#Wndw)/2, GetGadgetState(#TrackBar_Back_Pic_Y_Pos)-WindowHeight(#Wndw)+540)
; x+10
;:Z-INDEX
MP_SpriteSetZ(Background, GetGadgetState(#TrackBar_Back_Pic_Z_Pos))
;////////////////////////////////////////////////////////////////////////
;create Color for Wireframe and Solid Object
;////////////////////////////////////////////////////////////////////////
If CreateImage(#Texture, 30, 5)
MP_CreateImageColored(#Texture,0,GetGadgetState(#TrackBar_RGB_1),GetGadgetState(#TrackBar_RGB_2),GetGadgetState(#TrackBar_RGB_3),GetGadgetState(#TrackBar_RGB_4))
MP_EntitySetTexture (Mesh, MP_ImageToTexture(#Texture))
FreeImage(#Texture)
EndIf
Select EventGadget
;: LOAD BACKGROUND IMAGE
Case #Btn_Background_Pic
Image.s = OpenFileRequester("Background Image", "gfx\", "Graphic File|*.png|PNG Graphic-File (*.png)|*.png", 0)
Background = MP_LoadSprite(Image.s)
; MP_SpriteGetCenterX(Background)
; MP_SpriteGetCenterY(Background)
; Debug MP_SpriteGetCenterX(Background)
; MP_SpriteSetCenterX(Background, WindowWidth(#Wndw)/2)
; MP_SpriteSetCenterY(Background, WindowHeight(#Wndw)/2)
;:SOLID 3D OBJECT
Case #Chk_Solid_3dObject
SetGadgetState(#Chk_Wireframe, #PB_Checkbox_Unchecked)
SetGadgetState(#Chk_Solid_3dObject, #PB_Checkbox_Checked)
MP_Wireframe(0) ; 0 = kein wireframe
DisableGadget(#Chk_Solid_3dObject, #True)
DisableGadget(#Chk_Wireframe, #False)
;:WIREFRAME 3D OBJECT
Case #Chk_Wireframe
SetGadgetState(#Chk_Solid_3dObject, #PB_Checkbox_Unchecked)
SetGadgetState(#Chk_Wireframe, #PB_Checkbox_Checked)
MP_Wireframe(1) ; 1 = Wireframe
DisableGadget(#Chk_Wireframe, #True)
DisableGadget(#Chk_Solid_3dObject, #False)
;:CHANGE COLORS OF 3D OBJECT
Case #TrackBar_RGB_1
If StartDrawing(CanvasOutput(#Txt_RGB_1))
Box(0,0,30,30,GetGadgetState(#TrackBar_RGB_1))
StopDrawing()
EndIf
Case #TrackBar_RGB_2
If StartDrawing(CanvasOutput(#Txt_RGB_2))
Box(0,0,30,30,GetGadgetState(#TrackBar_RGB_2))
StopDrawing()
EndIf
Case #TrackBar_RGB_3
If StartDrawing(CanvasOutput(#Txt_RGB_3))
Box(0,0,30,30,GetGadgetState(#TrackBar_RGB_3))
StopDrawing()
EndIf
Case #TrackBar_RGB_4
If StartDrawing(CanvasOutput(#Txt_RGB_4))
Box(0,0,30,30,GetGadgetState(#TrackBar_RGB_4))
StopDrawing()
EndIf
Case #TrackBar_Back_ScalePic
;MP_ScaleSprite(Background, GetGadgetState(#TrackBar_Back_ScalePic), GetGadgetState(#TrackBar_Back_ScalePic))
; MP_SpriteSetCenterX(Background, WindowWidth(#Wndw)/2)
; MP_SpriteSetCenterY(Background, WindowHeight(#Wndw)/2)
MP_ScaleSprite(Background, GetGadgetState(#TrackBar_Back_ScalePic)+1, GetGadgetState(#TrackBar_Back_ScalePic)+1)
; MP_ScaleSprite(Background, GetGadgetState(#TrackBar_Back_ScalePic)+1, GetGadgetState(#TrackBar_Back_ScalePic)+1)
; MP_ScaleSprite(Background, GetGadgetState(#TrackBar_Back_ScalePic)-WindowWidth(#Wndw)+1, GetGadgetState(#TrackBar_Back_ScalePic)-WindowHeight(#Wndw)+540)
; MP_ScaleSprite(Background, GetGadgetState(#TrackBar_Back_ScalePic_Pos)+100+x, GetGadgetState(#TrackBar_Back_ScalePic_Pos)+100+x)
; x+1
Case #TrackBar_Volume
If EventGadget = #TrackBar_Volume ;Change Volume.
MP_SetVolumeV2M(GetGadgetState(#TrackBar_Volume)/100)
EndIf
EndSelect
;: todo
MP_ScaleEntity (Mesh, 1, 1, 0.1+left*5) ;wobble QUBS to music
; If EventGadget = #Chk_Bounce_Object_Z_axis
; If GetGadgetState(EventGadget) = #PB_Checkbox_Checked
; SetGadgetState(#Chk_Bounce_Object_X_axis, #PB_Checkbox_Unchecked)
; MP_ScaleEntity (Mesh, 1, 1, 0.1+left*5) ;wobble QUBS to music
; EndIf
; EndIf
If EventGadget = #Chk_Bounce_Object_Z_axis
SetGadgetState(#Chk_Bounce_Object_Z_axis, #PB_Checkbox_Checked)
SetGadgetState(#Chk_Bounce_Object_X_axis, #PB_Checkbox_Unchecked)
SetGadgetState(#Chk_Bounce_Object_Y_axis, #PB_Checkbox_Unchecked)
MP_ScaleEntity (Mesh, 1, 1, 0.1+left*5) ;wobble QUBS to music
EndIf
If EventGadget = #Chk_Bounce_Object_X_axis
SetGadgetState(#Chk_Bounce_Object_X_axis, #PB_Checkbox_Checked)
SetGadgetState(#Chk_Bounce_Object_Z_axis, #PB_Checkbox_Unchecked)
SetGadgetState(#Chk_Bounce_Object_Y_axis, #PB_Checkbox_Unchecked)
MP_ScaleEntity (Mesh, 0.1+left*5, 1, 1) ;wobble QUBS to music
EndIf
If EventGadget = #Chk_Bounce_Object_Y_axis
SetGadgetState(#Chk_Bounce_Object_Y_axis, #PB_Checkbox_Checked)
SetGadgetState(#Chk_Bounce_Object_Z_axis, #PB_Checkbox_Unchecked)
SetGadgetState(#Chk_Bounce_Object_X_axis, #PB_Checkbox_Unchecked)
MP_ScaleEntity (Mesh, 1, 0.1+left*5, 1) ;wobble QUBS to music
EndIf
;////////////////////////////////////////////////////////////////////////
;
;ESC-KEY END PROGRAM
;
;////////////////////////////////////////////////////////////////////////
If GetAsyncKeyState_(#VK_ESCAPE)
End
EndIf
Until Event = #PB_Event_CloseWindow : End
; IDE Options = PureBasic 5.73 LTS (Windows - x86)
; CursorPosition = 254
; FirstLine = 136
; Folding = V-
; EnableXP
; Executable = 3D-Animator.exe
; SubSystem = dx9
; CompileSourceDirectory
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS