Guten Tag,
möchte gern auf einer Form eine oder mehrere einfache oder Komplexe Formen zeichnen. Dafür hätte ich gerne eine Zoom-Funktion mit dem Mausscroller aller CAD.
So wie ich das sehe ist der ZoomPunkt immer bei TranslateTransform und die Formen müssen dazu verschoben werden.
Hier mein TestProg.
Mir fehlt der richtige Ansatz. Was mach ich falsch?
Vielen Dank
möchte gern auf einer Form eine oder mehrere einfache oder Komplexe Formen zeichnen. Dafür hätte ich gerne eine Zoom-Funktion mit dem Mausscroller aller CAD.
So wie ich das sehe ist der ZoomPunkt immer bei TranslateTransform und die Formen müssen dazu verschoben werden.
Hier mein TestProg.
Mir fehlt der richtige Ansatz. Was mach ich falsch?
Vielen Dank
VB.NET-Quellcode
- Imports System.Drawing.Drawing2D
- Public Class Form1
- Dim ScaleF As Single = 1
- Dim mpy As Integer = 0
- Dim mpx As Integer = 0
- Dim Path As New System.Drawing.Drawing2D.GraphicsPath()
- Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
- Dim Pen As New Pen(Color.Black, 2)
- e.Graphics.ScaleTransform(ScaleF, ScaleF, MatrixOrder.Append)
- e.Graphics.TranslateTransform(200 + mpx, 200 + mpy)
- Path.AddRectangle(New Rectangle((50 - mpx) * ScaleF, (50 - mpy) * ScaleF, 200 * ScaleF, 200 * ScaleF))
- e.Graphics.DrawPath(Pen, Path)
- Path.Reset()
- End Sub
- Private Sub Form2_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
- mpx = e.X
- mpy = e.Y
- ' Labels nur zur Visualisierung der Werte
- Label1.Text = mpx
- Label2.Text = mpy
- Label3.Text = ScaleF
- End Sub
- Private Sub Form2_MouseWheel(sender As Object, e As MouseEventArgs) Handles Me.MouseWheel
- If e.Delta > 0 Then
- ScaleF = ScaleF + 0.1
- ElseIf e.Delta < 0 Then
- ScaleF = ScaleF - 0.1
- If ScaleF < 0 Or ScaleF = 0 Then
- ScaleF = 0.1
- GoTo Sprung1
- End If
- End If
- Sprung1:
- Me.Invalidate()
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- ' Zoomn auf Ursprung
- mpx = 0
- mpy = 0
- ScaleF = 1
- Me.Invalidate()
- End Sub
- End Class