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 20 godzin
- Lokalizacja:Wrocław

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

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

- Rejestracja:około 16 lat
- Ostatnio:5 miesięcy
Ż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.



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.