Hallo,
in einem Programm möchte ich einen Bildausschnitt wählen und habe dafür folgenden Code eingebaut:
' Global definierte Variablen
Friend ptScreenDown As System.Drawing.Point ' zum zeichnen des
' Auswahlrahmens
Friend PtScreenLast As System.Drawing.Point ' zum zeichnen des
' Auswahlrahmens
' in Form definierte Variable:
Dim bHaveMouse As Boolean ' wird bei
' MouseDown gesetzt und bei MouseUp wieder aufgehoben und folgender abgespeckter Code:
Private Sub PdfViewer_MouseDown(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles PdfViewer1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
bHaveMouse = True ' Maus ist gedrückt
PmDataSet.ptScreenDown = Cursor.Position
End If
End Sub
Private Sub PdfViewer_MouseMove(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles PdfViewer1.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then
If (PmDataSet.PtScreenLast.X <> -1) Then ' wenn schon gezeichnet war ,
DrawReversibleRectangle(PmDataSet.ptScreenDown, _
PmDataSet.PtScreenLast) ' hebt die Zeichnung auf
End If
PmDataSet.PtScreenLast = Cursor.Position ' aktuelle Position merken
DrawReversibleRectangle(PmDataSet.ptScreenDown, _
PmDataSet.PtScreenLast) ' Rechteck zeichnen
End If
End Sub
Private Sub PdfViewer_MouseUp(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles PdfViewer1.MouseUp
If e.Button = MouseButtons.Left Then
bHaveMouse = False ' Maus nicht mehr gedrückt
PmDataSet.ptScreenDown = New Point(-1, -1)
PmDataSet.PtScreenLast = New Point(-1, -1)
End If
End Sub
Private Sub DrawReversibleRectangle(ByVal p1 As Point, ByVal p2 As Point)
Dim rc As Rectangle
rc.X = Math.Min(p1.X, p2.X)
rc.Y = Math.Min(p1.Y, p2.Y)
rc.Width = Math.Max(p1.X, p2.X) - rc.X
rc.Height = Math.Max(p1.Y, p2.Y) - rc.Y
ControlPaint.DrawReversibleFrame(rc, Color.DarkBlue, FrameStyle.Dashed)
End Sub Es wird ein Rechteck gezeichnet, aber nicht an der richtigen Stelle.
Ich hatte vorher anstatt Cursor.Position ein PdfViewer1.PointToScreen(e.Location) drin, hat auch nicht gestimmt.
Und wenn ich die Form auf den 2. Bildschirm verschiebe dann wird trotzdem auf dem 1.Schirm gezeichnet.
Wo ist mein Denkfehler?
Danke für die Hilfe
Gruß Christian |