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
End
Lg 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.