Wie pan-Bild im PictureBox
Habe ich eine benutzerdefinierte PictureBox
können zoom in verwenden MouseWheel
Veranstaltung. Jetzt möchte ich hinzufügen, dass ein Schwenk-Funktion, um es. Ich meine, wenn PictureBox ist im gezoomten Zustand, wenn der Benutzer Links klickt und hält die klicken dann die Maus bewegen, wird das Bild würde pan in das picturebox-Steuerelement.
Hier ist mein code, aber leider funktioniert es nicht! Ich weiß nicht, wo Sie zu suchen mehr...
private Point _panStartingPoint = Point.Empty;
private bool _panIsActive;
private void CurveBox_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Focus();
_panIsActive = true;
_panStartingPoint = e.Location;
}
}
private void CurveBox_MouseUp(object sender, MouseEventArgs e)
{
_panIsActive = false;
}
private void CurveBox_MouseLeave(object sender, EventArgs e)
{
_panIsActive = false;
}
private void CurveBox_MouseMove(object sender, MouseEventArgs e)
{
if(_panIsActive && IsZoomed)
{
var g = CreateGraphics(); //Create graphics from PictureBox
var nx = _panStartingPoint.X + e.X;
var ny = _panStartingPoint.Y + e.Y;
var sourceRectangle = new Rectangle(nx, ny, Image.Width, Image.Height);
g.DrawImage(Image, nx, ny, sourceRectangle, GraphicsUnit.Pixel);
}
}
Ich bin zu Ahnen, die MouseMove
Veranstaltung...ich bin nicht sicher, wenn etwas passiert, in diesem Fall und/oder nx
und ny
enthält die richtige Stelle.
Jedem hilft/Tipps ist wirklich appriciated!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, die Mathematik ist nach hinten. Versuchen Sie es so:
Sind Sie nicht entsorgen Ihre Grafik-Objekt, und CreateGraphics ist nur eine temporäre Zeichnung sowieso (Minimierung würde es löschen) also zog ich die Zeichnung code, um das Paint-event und bin einfach nur ungültig, der Benutzer schwenken.