Moin,
irgendwie stehe ich herade ratlos da, ich habe eine PB in der ich ein Bild lade und dieses möchte ich dann mit der Maus verschieben, sofern das Bild größer als die PB ist.
Das funktioniert auch bereits super. Nun möchte ich jedoch, dass man das Bild nicht über die Maximalmaße schieben kann, also wenn die rechte Seite erreicht ist, soll man nicht weiter schieben können, ebenso beim unteren Ende.
Oben und Links habe ich bereits einfach hinbekommen.
Hier erstmal mein Code
Global
Wenn ich nun ein Bildlade welches z.B. bei Abmaße 1280x1024 hat und mir die Position des Bildausschnitts anzeigen lasse, so hat CurPos.X den Wert 1218 wenn das Bild am rechten Rand der PB angelangt ist. Meine Frage ist nun, wie komme ich mathematisch auf diesen Wert?
PS: Die PB hat die Abmaße 490x68.
irgendwie stehe ich herade ratlos da, ich habe eine PB in der ich ein Bild lade und dieses möchte ich dann mit der Maus verschieben, sofern das Bild größer als die PB ist.
Das funktioniert auch bereits super. Nun möchte ich jedoch, dass man das Bild nicht über die Maximalmaße schieben kann, also wenn die rechte Seite erreicht ist, soll man nicht weiter schieben können, ebenso beim unteren Ende.
Oben und Links habe ich bereits einfach hinbekommen.
Hier erstmal mein Code
Global
VB.NET-Quellcode
- Private Sub imgHeader_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles imgHeader.MouseDown
- Dim This As PictureBox = TryCast(sender, PictureBox)
- If Not bButtonPressed AndAlso e.Button = Windows.Forms.MouseButtons.Left Then
- bButtonPressed = True
- MousePos = New Point(Cursor.Position.X - PicPos.X, Cursor.Position.Y - PicPos.Y)
- End If
- End Sub
- Private Sub imgHeader_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles imgHeader.MouseMove
- Dim This As PictureBox = TryCast(sender, PictureBox)
- If bButtonPressed Then
- Dim bNew As New Bitmap(This.Width, This.Height)
- Dim g As Graphics = Graphics.FromImage(bNew)
- If BigPicture.Width - This.Width > 0 Then
- If Cursor.Position.X - MousePos.X < 0 Then CurrentPos.X = Cursor.Position.X - MousePos.X
- End If
- If BigPicture.Height - This.Height > 0 Then
- If Cursor.Position.Y - MousePos.Y < 0 Then CurrentPos.Y = Cursor.Position.Y - MousePos.Y
- End If
- g.DrawImage(BigPicture, CurrentPos)
- g.Dispose()
- This.Image = bNew
- End If
- End Sub
- Private Sub imgHeader_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles imgHeader.MouseUp
- If bButtonPressed AndAlso e.Button = Windows.Forms.MouseButtons.Left Then
- PicPos = New Point(CurrentPos.X, CurrentPos.Y)
- End If
- bButtonPressed = False
- End Sub
Wenn ich nun ein Bildlade welches z.B. bei Abmaße 1280x1024 hat und mir die Position des Bildausschnitts anzeigen lasse, so hat CurPos.X den Wert 1218 wenn das Bild am rechten Rand der PB angelangt ist. Meine Frage ist nun, wie komme ich mathematisch auf diesen Wert?
PS: Die PB hat die Abmaße 490x68.