Bild auf Benutzeroberfläche bewegen?
Bild auf Benutzeroberfläche bewegen?
Kann man ein Bild auf der Benutzeroberfläche automatisch bewegen oder auch per Tastatur-und Mauseingabe bewegen lassen, ähnlich wie ein Sprite im Screen?
Grüße
			
			
									
									Grüße
The World is Cyber
						Re: Bild auf Benutzeroberfläche bewegen?
Herrje  ..
Das Bild wird entweder als Imagegadget(..) auf das Fenstergelegt oder draufgemalt.
Wenn es draufgemalt wird (immer unpraktisch) dann malt man es eben einfach woanders hin
(Reste von vorhergemalten Bild dürften stehen bleiben und müssen irgendwie anders entfernt werden.
Das Imagegadget wird per ResizeGadget(..) verschoben
Genaueres weiß die PB-Hilfe
hier mal ein Demo mit Resizegadget(..)
			
			
									
									Das Bild wird entweder als Imagegadget(..) auf das Fenstergelegt oder draufgemalt.
Wenn es draufgemalt wird (immer unpraktisch) dann malt man es eben einfach woanders hin
(Reste von vorhergemalten Bild dürften stehen bleiben und müssen irgendwie anders entfernt werden.
Das Imagegadget wird per ResizeGadget(..) verschoben
Genaueres weiß die PB-Hilfe
hier mal ein Demo mit Resizegadget(..)
Code: Alles auswählen
img=CreateImage(#PB_Any,50,50)
StartDrawing(ImageOutput(img))
  Box(0,0,50,50,#Red)
  Circle(25,25,24,#Yellow)
  
  Ellipse(25,28,12,5,#Black)
  Ellipse(25,26,14,5,#Yellow)
  
  Ellipse(15,15,3,5,#Black)
  Ellipse(35,15,3,5,#Black)
  
StopDrawing()
win=OpenWindow(#PB_Any,0,0,400,400,"test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ig=ImageGadget(#PB_Any,0,0,50,50,ImageID(img))
tim=1
AddWindowTimer(win,tim,333)
Repeat
  event=WaitWindowEvent()
  etimer=EventTimer()
  Select event
    Case #PB_Event_CloseWindow
      quit+1
    Case #PB_Event_Timer
      Select etimer
        Case tim
          ResizeGadget(ig,Random(350),Random(350),#PB_Ignore,#PB_Ignore)
      EndSelect
  EndSelect
Until quit
End
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
						Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Re: Bild auf Benutzeroberfläche bewegen?
Wie kann ich nun in diesem Beispiel Programm das Image Gadget mit der Tastatur bewegen?
Habs versucht aber kläglich gescheitert xD
Danke!
			
			
									
									Code: Alles auswählen
Enumeration
#FENSTER_HAUPT
#BILD_spielmap_DATEI
#BILD_spielmap_ANZEIGE
#BILD_mario_ANZEIGE
#mario
EndEnumeration
    
  Repeat
   #FLAGS = #PB_Window_SystemMenu | #PB_Window_ScreenCentered 
   If OpenWindow(#FENSTER_HAUPT, 0, 0, 800, 600, "Test", #FLAGS)
     
  LoadImage(#BILD_spielmap_DATEI, "landschaft.bmp")
   ImageGadget(#BILD_spielmap_ANZEIGE, 0, 0, 800, 600, ImageID(#BILD_spielmap_DATEI), #PB_Image_Border) 
 LoadImage(#mario, "mario.bmp")
   ImageGadget(#BILD_mario_ANZEIGE, 50, 300, 50, 50, ImageID(#mario), #PB_Image_Border) 
  Repeat
      ResizeGadget(#mario, 150, 100, #PB_Ignore, #PB_Ignore) 
      KeyboardPushed(#PB_Key_W)
          x = x + 1
   If x = > 100
      x = 0
    EndIf 
FlipBuffers()
ExamineKeyboard()
    
Until Ereignis = #PB_Event_CloseWindow Or Beenden = #True
EndIf
End
ForEver
Danke!
The World is Cyber
						- Dave
 - Beiträge: 22
 - Registriert: 12.06.2011 21:39
 - Computerausstattung: Windows 10 x64, Intel Core i7 7700k @4.2Ghz, 16GB RAM, PureBasic 5.72
 
Re: Bild auf Benutzeroberfläche bewegen?
Hi,
So sollte es funktionieren:
Ohne Screen kannst du auch die PB Keyboard Library nicht benutzen.
Lg Dave
			
			
									
									So sollte es funktionieren:
Code: Alles auswählen
Enumeration
  #FENSTER_HAUPT
  #BILD_spielmap_DATEI = 0
  #BILD_spielmap_ANZEIGE
  #BILD_mario_ANZEIGE
  #mario
EndEnumeration
#FLAGS = #PB_Window_SystemMenu | #PB_Window_ScreenCentered
Define.f X, Y
If OpenWindow(#FENSTER_HAUPT, 0, 0, 800, 600, "Test", #FLAGS)
  LoadImage(#BILD_spielmap_DATEI, "landschaft.bmp")
  ImageGadget(#BILD_spielmap_ANZEIGE, 0, 0, 800, 600, ImageID(#BILD_spielmap_DATEI), #PB_Image_Border)
    
  LoadImage(#mario, "mario.bmp")
  ImageGadget(#BILD_mario_ANZEIGE, 50, 300, 50, 50, ImageID(#mario), #PB_Image_Border)
  
  
  Repeat
    Ev = WaitWindowEvent(2)
    
    If GetAsyncKeyState_(#VK_W)
      Y-0.1
    EndIf
    If GetAsyncKeyState_(#VK_S)
      Y+0.1  
    EndIf
    
    If GetAsyncKeyState_(#VK_A)
      X-0.1
    EndIf
    If GetAsyncKeyState_(#VK_D)
      X+0.1
    EndIf
    
    ResizeGadget(#BILD_mario_ANZEIGE, X, Y, #PB_Ignore, #PB_Ignore)
    
  Until Ev = #PB_Event_CloseWindow  
EndIf
EndLg Dave
 
 
Re: Bild auf Benutzeroberfläche bewegen?
Super, Danke!
Ihr seit echt ne klasse Community
			
			
									
									Ihr seit echt ne klasse Community
The World is Cyber
						Re: Bild auf Benutzeroberfläche bewegen?
Noch ne Frage.
Wie bekomm ich das das bild sich an bestimmten stellen random bewegt.
Er meldet "Gadget not initilised"
ich habs versucht aber nix tut sich.
Hier der Code
			
			
									
									Wie bekomm ich das das bild sich an bestimmten stellen random bewegt.
Er meldet "Gadget not initilised"
ich habs versucht aber nix tut sich.
Hier der Code
Code: Alles auswählen
 LoadImage(#pixelmann, "pixelm.bmp")
 ig=ImageGadget(#BILD_pixelmann_ANZEIGE, 50, 300, 50, 50, ImageID(#pixelmann), #PB_Image_Border)
  
   LoadImage(#BILD_spielmap_DATEI, "landschaft.bmp")
   ImageGadget(#BILD_spielmap_ANZEIGE, 0, 0, 800, 600, ImageID(#BILD_spielmap_DATEI), #PB_Image_Border) 
   lauf=1
   AddWindowTimer(win,lauf,333)
   
Repeat
  Ereignis.i = WaitWindowEvent()
  etimer=EventTimer()
  Select Ereignis
    Case #PB_Event_Timer
      Select etimer
        Case lauf
          ResizeGadget(ig,Random(350),Random(350),#PB_Ignore,#PB_Ignore) 
 
EndSelect
EndSelect
Until Ereignis = #PB_Event_CloseWindow Or Ende = #True
 
End
EndIf
The World is Cyber
						Re: Bild auf Benutzeroberfläche bewegen?
Code: Alles auswählen
 ig=ImageGadget(#BILD_pixelmann_ANZEIGE, 50, 300, 50, 50, ImageID(#pixelmann), #PB_Image_Border)
Entweder setzt Du hier statt #BILD_pixelmann_ANZEIGE #PB_Any wobei ig dann die Gagetnummer enthält
ODER du
schreibst beim Resizen statt
Code: Alles auswählen
          ResizeGadget(ig,Random(350),Random(350),#PB_Ignore,#PB_Ignore) 
Code: Alles auswählen
          ResizeGadget(#BILD_pixelmann_ANZEIGE,Random(350),Random(350),#PB_Ignore,#PB_Ignore) 
Übrigens : Wenn man in der IDE alles markiert und STRG i drückt, dann wird es meist nett formatiert
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
						Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Re: Bild auf Benutzeroberfläche bewegen?
Ah super funktioniert und Danke für den tipp!
Wollte nun mit ner For Next schleife das bild schrittweise hin und her bewegen in einer endlos schleife aber ohne das es das Programm behindert.
Aber es klappt nicht.
Grüße und Danke
			
			
									
									Wollte nun mit ner For Next schleife das bild schrittweise hin und her bewegen in einer endlos schleife aber ohne das es das Programm behindert.
Aber es klappt nicht.
Code: Alles auswählen
 
define.f x, y
Repeat
      Ereignis.i = WaitWindowEvent()
      etimer=EventTimer()
      Select Ereigns
        Case #PB_Event_Timer
          Select etimer
            Case lauf
              ResizeGadget(#BILD_pixelmann_ANZEIGE,x,y,#PB_Ignore,#PB_Ignore) 
              For var=x To 300 Step 1
              Next 
          EndSelect
      EndSelect
The World is Cyber
						Re: Bild auf Benutzeroberfläche bewegen?
Moin!
Da kann überhaupt nichts funktionieren, denn Dein
Gruß - WPö
			
			
									
									Da kann überhaupt nichts funktionieren, denn Dein
wird immer NULL sein. Innerhalb einer Ereignisschleife darfst Du selbstverständlich keine 300stufige Bewegung einbauen, sondern immer nur eine einzige Stufe. Die Umkehrpunkte mußt Du selbst bestimmen, auswerten und danach die Bewegungsrichtung bestimmen. Zuletzt: Wo ist die Anweisung zur Neupositionierung?NeoRon hat geschrieben: Select Ereigns
Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
						Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.