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.).

- Rejestracja:około 17 lat
- Ostatnio:około 9 godzin
- Lokalizacja:Wrocław

- 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?
- Rejestracja:ponad 13 lat
- Ostatnio:około 13 lat
- Postów:98

- Rejestracja:ponad 18 lat
- Ostatnio:około 8 lat
- Postów:268
0
tutaj konkretny przykład: http://www.codeproject.com/KB/miscctrl/ScalablePictureBox.aspx

- Rejestracja:prawie 16 lat
- Ostatnio:4 miesiące
1
Ż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

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)));
}
?

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 :>

Kurcze, szkoda. Pomysł wydał się dość ciekawy i myślałem, że rozwiązanie będzie trudniejsze przy okazji ze szczyptą rywalizacji.