Płynne przesuwanie elementów

0

Mam pytanie czy wie ktoś jak powinien wyglądać kod , aby elementy przesuwały się płynnie za kursorem myszki , po jego naciśnięciu? Wiem, ze mniej więcej powinno wyglądać, lecz nie mogę wymyślić jak to zrobić do końca.

np. pictureBox

 
 private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
                    X = pictureBox1.Location.X + e.Location.X;
                    Y = pictureBox1.Location.Y + e.Location.Y;
                    pictureBox1.Location = new Point(X, Y);
                   
                }
                
            }
0

MouseUp MouseEventArgs - "Occurs when the mouse pointer is over the control and a mouse button is released."

Raczej użyj eventu MouseDown - "Occurs when the mouse pointer is over the control and a mouse button is pressed."

Jednak musisz odczytywać pozycję myszki relatywną do ekranu bo jak ciągle znajduje się nad pictureboxem ( przesuwanym za myszką ) to e.LocationX i e.LocationY podaje ci to samo :)

0

w on mouse down ustawiasz jakąś flagę, w on mouse up ją kasujesz a w on mouse move jeśli flaga jest ustawiona to przesuwasz kontrolkę o oldX - currX, oldY - currY. currX i currY dostajesz w zdarzeniu on mouse move, oldX i oldY to jak sama nazwa mówi poprzednie położenie X i Y, które trzeba po prostu zapamiętać

0

Chodziło mi bardziej o taki efekt jak w kodzie poniżej. Chciałbym jednak mieć kontrolę nad tym obiektem. Po wciśnieciu myszki chciałbym aby przemieszczał się płynnie za kursurem, a po zwolnieniu przycisku myszy aby pozostał we wskazanym miejscu. Wklejam kod, aby łatwiej było zrozumieć o co mi chodzi :

private void Form1_MouseMove_1(object sender, MouseEventArgs e)
        {
            pictureBox1.Location = new Point(MousePosition.X, MousePosition.Y);
        }
 
0
abrakadaber napisał(a):

w on mouse down ustawiasz jakąś flagę, w on mouse up ją kasujesz a w on mouse move jeśli flaga jest ustawiona to przesuwasz kontrolkę o oldX - currX, oldY - currY. currX i currY dostajesz w zdarzeniu on mouse move, oldX i oldY to jak sama nazwa mówi poprzednie położenie X i Y, które trzeba po prostu zapamiętać

0

dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1