Hallo Leute,
ich möchte 2 Objekte die freie Konturen sind aufeinander zu bewegen lassen und bei der Kollision soll die Bewegung unterbrochen werden und mir der X und Y Wert geliefert werden.
Habe im iNet was mit Region erstellen gefunden.
Die Abfrage der Kollision funktioniert leider nicht so:
Bekomme bei rgn.Intersect(rgn1) einen Fehler.
Auch wenn ich für rgn1 ---> myPath1 einfüge.
Bitte helft mir. Wie kann ich das machen, das es funktioniert
Hier mein kompletter Code:
Spoiler anzeigen
Vielen Dank im vorraus
ich möchte 2 Objekte die freie Konturen sind aufeinander zu bewegen lassen und bei der Kollision soll die Bewegung unterbrochen werden und mir der X und Y Wert geliefert werden.
Habe im iNet was mit Region erstellen gefunden.
Die Abfrage der Kollision funktioniert leider nicht so:
Bekomme bei rgn.Intersect(rgn1) einen Fehler.
Auch wenn ich für rgn1 ---> myPath1 einfüge.
Bitte helft mir. Wie kann ich das machen, das es funktioniert
Hier mein kompletter Code:
VB.NET-Quellcode
- Imports System.Drawing.Drawing2D
- Public Class Form1
- Dim x As Integer = 10
- Dim y As Integer = 10
- Dim x1 As Integer = 10
- Dim y1 As Integer = 10
- Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
- End Sub
- Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
- Dim myPath As New GraphicsPath
- myPath.StartFigure()
- myPath.AddLine(0, 0, 0, 20)
- myPath.AddLine(0, 20, 20, 20)
- myPath.AddLine(20, 20, 20, 0)
- Dim translateMatrix As New Matrix
- translateMatrix.Translate(x, y)
- myPath.Transform(translateMatrix)
- Dim myPath1 As New GraphicsPath
- myPath1.StartFigure()
- myPath1.AddLine(100, 0, 100, 20)
- myPath1.AddLine(100, 20, 120, 20)
- myPath1.AddLine(120, 20, 120, 0)
- Dim translateMatrix1 As New Matrix
- translateMatrix1.Translate(x1, y1)
- myPath1.Transform(translateMatrix1)
- e.Graphics.DrawPath(New Pen(Color.Red, 2), myPath)
- e.Graphics.DrawPath(New Pen(Color.Black, 2), myPath1)
- Dim rgn As New Region(myPath)
- Dim rgn1 As New Region(myPath1)
- If rgn.Intersect(rgn1) = True Then
- Timer1.Stop()
- MessageBox.Show("X: " & x & " Y:" & y & "X1: " & x1 & " Y1:" & y1)
- End If
- End Sub
- Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
- x += 1
- y += 1
- x1 -= 1
- y1 += 1
- Me.Invalidate()
- End Sub
- End Class
Vielen Dank im vorraus