przesuwanie obrazka wczytanego z dysku do picturebox

Odpowiedz Nowy wątek
2011-08-04 21:31
123
0

Tak jak w temacie, dodam jeszcze, że ten obrazek wczytany znajduje się w picturebox po wczytaniu i chce go przesuwać za pomocą kliknięcia i przesuwania (w lewu, w prawo itd.).

Jak wpisałem w Google "lewu" to mi się murzyny jakieś pokazały. - O_o 2011-08-04 21:59
thuuu co to masz za google :] - marcio 2011-08-04 22:30
Nazistowskie. Kratownica pełan murzynów. ;) - O_o 2011-08-04 22:43
Czekaj, aż sam sprawdzę........ Nie, ja mam normalne Google :D - xeo545x39 2011-08-05 14:13

Pozostało 580 znaków

2011-08-05 01:47
msm
0

Gdybym rozumiał o co Ci chodzi to byłoby prościej?

Też natknąłem się na pewną granicę komunikacyjną. :) - O_o 2011-08-05 02:11

Pozostało 580 znaków

2011-08-05 03:01
0

Chyba chce załadować obrazek do PictureBoxa, a potem złapać go myszą (w sensie lewy przycisk wciśnięty) i przesuwać po PictureBoxie. Zgadłem?


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
yyy, jak można przesuwać PictureBox po PictureBoxie? Tzn. da się, ale źle sformułowałeś to zdanie. ;p - xeo545x39 2011-08-05 14:14
To "go" dotyczyło obrazka. - somekind 2011-08-05 20:00

Pozostało 580 znaków

2011-08-05 09:52
123
0

Tak somekind. Właśnie oto mi chodziło. :)

Pozostało 580 znaków

2011-08-05 12:27
0

Na mouseDown zapamiętujesz gdzie nastąpiło kliknięcie.
Na mouseMove (jeśli obrazek jest trzymany) wyliczasz o ile przesunąć obrazek.
Na mouseDown utrwalasz przesunięcie, np. przestawiasz flagę że w mouseMove już nie przesuwasz obrazka.
Nie wiem tylko co chcesz przesuwać, obrazek w picturebox, czy cały picturebox?

Pozostało 580 znaków

2011-08-05 12:54
msm
0

I maksymalnie jeden obrazek czy może ich być wiele?

Pozostało 580 znaków

2011-08-05 13:35
123
0

Obrazek w picturebox, maksymalnie jeden.

Pozostało 580 znaków

2011-08-05 15:43
O_o
0

Chce się komuś pisać gotowca? Bo jak nie to się postaram stworzyć jakąś herezję z LINQ i Reflections. ;)


O̾..͠o
do przesuwania obrazka... :o dawaj wać Pan :D - massther 2011-08-05 16:10
Challenge accepted! - O_o 2011-08-05 16:12
This will be legen - wait for it - dary :D - Madm4n 2011-08-05 16:28
Parę dni upału i chłopakowi dogrzało. :( - somekind 2011-08-05 20:16

Pozostało 580 znaków

2011-08-05 23:18
0

tutaj konkretny przykład: http://www.codeproject.com/KB/miscctrl/ScalablePictureBox.aspx


Pozostało 580 znaków

2011-08-06 00:45
msm
0

Żeby autorowi pytania nie było smutno:

    class MyPictBox : PictureBox
    {
        private Point location;
        private Point scrollLocation;
        private bool scroll;
 
        public MyPictBox()
        {
        }
 
        protected override void OnMouseDown(MouseEventArgs e)
        {
            if (new Rectangle(location, size).Contains(e.Location))
            {
                scroll = true;
                this.scrollLocation = e.Location;
            }
            base.OnMouseDown(e);
        }
 
        protected override void OnMouseMove(MouseEventArgs e)
        {
            if (scroll)
            {
                int deltaX = e.Location.X - scrollLocation.X;
                int deltaY = e.Location.Y - scrollLocation.Y;
                location = new Point(location.X + deltaX, location.Y + deltaY);
                this.scrollLocation = e.Location;
            }
            base.OnMouseMove(e);
        }
 
        protected override void OnMouseUp(MouseEventArgs e)
        {
            scroll = false;
            base.OnMouseUp(e);
        }
 
        protected override void OnPaint(PaintEventArgs pe)
        {            
            if (Image != null)
            {
                pe.Graphics.Clear(this.BackColor);
                pe.Graphics.DrawImage(this.Image, new Rectangle(imageCorner, image.Size)));
            }
        }
    }

Żeby rozwiązanie było pełne, trzeba by tutaj dopisać parę rzeczy, na przykład obsługę zmiany rozmiaru kontrolki etc. Ja się z tym już nie bawiłem ale to dość proste.

edytowany 13x, ostatnio: msm, 2011-08-06 01:45
if (Image != null) { pe.Graphics.Clear(this.BackColor); pe.Graphics.DrawImage(this.Image, new Rectangle(imageCorner, new Size(this.Width - imageCorner.X, this.Height - imageCorner.Y))); } ? - Wronq 2011-08-06 01:23
Ech, w sumie racja... Tzn. nie rozwiązałeś problemu bo problem dalej jest i ma się dobrze - trafiłem na ciekawą rzecz przy bardziej czymś nie mającego wiele wspólnego z zadaniem ale źle przerobiłem na zadanie bo, jak widać, da się obejść w banalny sposób :D. Ok, żeby się nie kompromitować usuwam z treści posta :> - msm 2011-08-06 01:42
Kurcze, szkoda. Pomysł wydał się dość ciekawy i myślałem, że rozwiązanie będzie trudniejsze przy okazji ze szczyptą rywalizacji. - Wronq 2011-08-06 12:45

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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