Avatar billede bossehansen Nybegynder
03. maj 2005 - 09:25 Der er 7 kommentarer og
1 løsning

Picturebox - Scroll med mus

Jeg har en picturebox, hvor jeg har lavet en zoom funktion. Når man zoomer ind bliver billedet større end picturebox'en, og der kommer nu scroll barer på picturebox'en, og det er muligt at scrolle rundt og se forskellige stedet på billedet.

Jeg vil gerne lave denne scroll funktion, så man holder venstre museknap nede, curseren bliver til "Hand" (dette kan jeg godt klare :-) ), og man flytter billedet rundt i stedet for at bruge scrollbars.

Kan det lade sig gøre, og hvordan?
Avatar billede faedros Nybegynder
03. maj 2005 - 15:45 #1
Du kan gøre det ved at placere pictureboxen på et panel. Når du holder venstre museknap nede og laver og flytter musen, kan du ændre positionen på pictureboxen tilsvarende. Et lille kodeeksempel følger herunder. Du kan så forfine på løsningen til at begrænse hvor langt man kan flytte billedet, reducere på skærmflimmer osv.

private bool Scrolling = false;
private int BoxStartX;
private int BoxStartY;
private int MouseStartX;
private int MouseStartY;

private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                // Switch to scrolling mode
                Scrolling = true;

                // Remember mouse starting coordinates
                MouseStartX = e.X;
                MouseStartY = e.Y;

                // Remember box starting coordinates
                BoxStartX = pictureBox1.Left;
                BoxStartY = pictureBox1.Top;       
            }
        }

        private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                // Switch to scrolling mode
                Scrolling = true;

                // Remember mouse starting coordinates
                MouseStartX = e.X;
                MouseStartY = e.Y;

                // Remember box starting coordinates
                BoxStartX = pictureBox1.Left;
                BoxStartY = pictureBox1.Top;       
            }
        }

        private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (Scrolling)
            {
                // Update box position according to how mouse has moved since MouseDown
                pictureBox1.Left = e.X - MouseStartX + BoxStartX;
                pictureBox1.Top = e.Y - MouseStartY + BoxStartY;
            }

        }

        private void pictureBox1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                Scrolling = false;
            }
       
        }
Avatar billede faedros Nybegynder
03. maj 2005 - 15:46 #2
Ups, fik lagt MouseDown metoden in to gange - håber du kan abstrahere fra det :)
Avatar billede bossehansen Nybegynder
04. maj 2005 - 11:17 #3
Kigger straks på det :-)
Avatar billede bossehansen Nybegynder
09. maj 2005 - 18:59 #4
Ups. Jeg nåede ikke lige at kigge på det. Men jeg tester dit forslag i aften, så jeg kan få lukket spørgsmålet og givet nogle point
Avatar billede bossehansen Nybegynder
11. maj 2005 - 10:17 #5
--> faedros
Jeg har endnu ikke en færdig løsning, men du har i hvert fald skubbet mig i den rigtige retning, så smid et svar, så du kan få dine fortjente point.
Avatar billede faedros Nybegynder
11. maj 2005 - 10:25 #6
Tjuhej.. :)
Avatar billede knaldeglad Nybegynder
22. februar 2006 - 20:57 #7
æææh  ahem.... maa  jeg ikke lige se den der zoom ting du har lavet bossehansen ? plz...
Avatar billede knaldeglad Nybegynder
29. oktober 2006 - 13:08 #8
dvs. jeg må ikke se koden til det zoom halløj du har lavet ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester