Bild in einem Fenster immer Zentriert laden - MP3D Lib relevant?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Bild in einem Fenster immer Zentriert laden - MP3D Lib relevant?

Beitrag von udg »

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

Bild

Bild
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
Benutzeravatar
jacdelad
Beiträge: 341
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?

Beitrag von jacdelad »

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...
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
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: Bild in einem Fenster immer Zentriert laden - MP3D Lib relevant?

Beitrag von udg »

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
Antworten