przesuwanie obrazka wczytanego z dysku do picturebox

przesuwanie obrazka wczytanego z dysku do picturebox
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.).

OO
Jak wpisałem w Google "lewu" to mi się murzyny jakieś pokazały.
marcio
thuuu co to masz za google :]
OO
Nazistowskie. Kratownica pełan murzynów. ;)
xeo545x39
Czekaj, aż sam sprawdzę........ Nie, ja mam normalne Google :D
msm
Administrator
  • Rejestracja:około 16 lat
  • Ostatnio:5 miesięcy
1

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

OO
Też natknąłem się na pewną granicę komunikacyjną. :)
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 20 godzin
  • Lokalizacja:Wrocław
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?

xeo545x39
yyy, jak można przesuwać PictureBox po PictureBoxie? Tzn. da się, ale źle sformułowałeś to zdanie. ;p
somekind
To "go" dotyczyło obrazka.
0

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

massther
  • Rejestracja:ponad 16 lat
  • Ostatnio:prawie 9 lat
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?

msm
Administrator
  • Rejestracja:około 16 lat
  • Ostatnio:5 miesięcy
1

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

0

Obrazek w picturebox, maksymalnie jeden.

OO
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 13 lat
  • Postów:98
0

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


O̾..͠o
massther
do przesuwania obrazka... :o dawaj wać Pan :D
OO
Challenge accepted!
M4
This will be legen - wait for it - dary :D
somekind
Parę dni upału i chłopakowi dogrzało. :(
Loganek
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 8 lat
  • Postów:268
0

msm
Administrator
  • Rejestracja:około 16 lat
  • Ostatnio:5 miesięcy
1

Żeby autorowi pytania nie było smutno:

Kopiuj
    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
Wronq
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))); } ?
msm
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 :>
Wronq
Kurcze, szkoda. Pomysł wydał się dość ciekawy i myślałem, że rozwiązanie będzie trudniejsze przy okazji ze szczyptą rywalizacji.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.