Fenster verschieben
Übersicht

![]() |
N0XBetreff: Fenster verschieben |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Ich habe eigene Fenster erstellt (mit Rect's). Diese möchte ich verschieben, aber so, dass das Fenster dort "angepackt" wird wo die Maus gerade gedrückt hat. Vielleicht versteht das jemand mit dem Code besser: Code: [AUSKLAPPEN] Global x_pos%,y_pos%
Global x_size%,y_size% While Not KeyHit(1) If MouseDown(1) Then mx = MouseX() my = MouseY() If ImageRectCollide(cursor,mx,my,0,x_pos%,y_pos%,x_size%,y_size%) Then x_pos% = mx y_pos% = my EndIf EndIf Wend End So ist es nämlich nicht so gut (finde ich), weil die Fenster-Startkoordinaten immer zu den Mauskoordinaten gesetzt werden. Wie kann ich das besser lösen? Mfg, N0X ![]() |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst im Moment des Maus-Klicks (MouseHit![]() |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
- Zuletzt bearbeitet von D2006 am Mo, Feb 01, 2010 12:17, insgesamt einmal bearbeitet
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst dir einfach im Moment des ersten Klicks den Abstand der Mauskoordinaten vom Image-Ursprung in AbstandX% merken und dann das Bild immer auf MouseX()-AbstandX, etc.. zeichnen | ||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, so?
Code: [AUSKLAPPEN] Global x_pos%,y_pos%
Global x_size%,y_size% While Not KeyHit(1) If MouseDown(1) Then mx = MouseX()-x_pos% my = MouseY()-y_pos% If ImageRectCollide(cursor,mx,my,0,x_pos%,y_pos%,x_size%,y_size%) Then x_pos% = mx y_pos% = my EndIf EndIf Wend End Geht nicht. |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier ein Beispiel:
BlitzBasic: [AUSKLAPPEN] Graphics 800,600 |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe das in einer Funktion, dürfte doch aber keine Probleme machen, oder?
Tut's aber. Code: [AUSKLAPPEN] Function createMap()
If MouseDown(1) Then If MouseHit(1) Then mx = MouseX()-rx my = MouseY()-ry Else rx = MouseX()-mx ry = MouseY()-my EndIf EndIf Color 0,255,0 Rect rx%,ry%,x_size2%,y_size2% Color 255,255,255 End Function |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja, du willst es ja nicht mit dem RECT machen, sondern mit Deinem Image, oder? Das ImageCollide muss natürlich auch wieder rein.
Und wahrscheinlich wird das Malen des Fenster-Bildes ja nicht innerhalb der Funktion sein. Daher müssen die Variablen Mx% und My% GLOBAL definiert sein. |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh, jetzt wo ich mx und my global deklariert habe, läufts! ![]() Aber ab und zu "springt" mir das Fenster weg ![]() |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
code? | ||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Global rx,ry,mx,my
While Not KeyHit(1) createMap() Wend End Function createMap() If MouseDown(1) Then If MouseHit(1) Then mx = MouseX()-rx my = MouseY()-ry Else rx = MouseX()-mx ry = MouseY()-my EndIf EndIf Color 0,255,0 Rect rx,ry,x_size2%,y_size2% Color 255,255,255 End Function |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
https://www.blitzforum.de/foru...972#119972 ![]() |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
@nox:
das kann ja nicht der ganze code sein... da ist keine Hauptschleife dabei... bei mir springt nix weg. wie meinst du das genau: springt weg und bleibt auch weg oder "flackert" nur kurz, um dann doch wieder bei der Maus zu sein? Wann springt es weg? Mitten im Ziehen oder in einer Stillstandphase? "springt weg" würde ja heißem, RX und RY erhalten plötzlich irgendwoher ganz andere Werte.. außerdem hießen die Koordinaten in deinem ersten Beispiel doch eigentlich x_pos% und y_pos%, oder? Hast du da vielleicht versehentlich was aus meinem Beispiel mit deinem Code vermischt? |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nene, das mit x_pos2% und y_pos2% hat schon seine Richtigkeit so.
Ich habe jetzt einfach mal den Beispielcode von SpionAtom genommen. Klappt. |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group