Ciao a tutti ho un piccolo problema...Devo disegnare delle linee dinamicamente, cioè clicco una prima volta e fisso il primo punto, poi muovendomi devo vedere la linea muoversi e poi con un secodno click fisso il secondo punto della linea...
Sono da poco passato a vb.net...In vb6 tutto questo lo facevo con il seguente codice:
codice:
Dim oldX As Single, oldY As Single
'Array Linee
Dim arrX1(1000) As Single
Dim arrX2(1000) As Single
Dim arrY1(1000) As Single
Dim arrY2(1000) As Single
Dim iNumLinee As Integer
Private Sub Form_Load()
oldX = -1: oldY = -1
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If oldX <> -1 Then
Picture2.PaintPicture Picture1.Image, 0, 0
Else
'Aggiunge le coordinate della linea negli array delle linee
arrX1(iNumLinee) = oldX
arrX2(iNumLinee) = X
arrY1(iNumLinee) = oldY
arrY2(iNumLinee) = Y
iNumLinee = iNumLinee + 1
End If
oldX = X
oldY = Y
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If oldX = -1 Then Exit Sub
Picture1.PaintPicture Picture2.Image, 0, 0
Picture1.Line (oldX, oldY)-(X, Y), RGB(0, 0, 0)
End Sub
Ho provato a riadattarlo in vb.net in questo modo ma il risultato è pessimo...
codice:
Public Class Form1
Dim oldX As Single, oldY As Single
'Array Linee
Dim arrX1(1000) As Single
Dim arrX2(1000) As Single
Dim arrY1(1000) As Single
Dim arrY2(1000) As Single
Dim iNumLinee As Integer
Dim bm As Bitmap
Private Sub Picture1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Picture1.MouseDown
If oldX <> -1 Then
bm = New Bitmap(Picture1.Size.Width, Picture1.Size.Height, Picture1.CreateGraphics())
Else
'Aggiunge le coordinate della linea negli array delle linee
arrX1(iNumLinee) = oldX
arrX2(iNumLinee) = e.X
arrY1(iNumLinee) = oldY
arrY2(iNumLinee) = e.Y
iNumLinee = iNumLinee + 1
End If
oldX = e.X
oldY = e.Y
End Sub
Private Sub Picture1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Picture1.MouseMove
If oldX = -1 Then Exit Sub
Picture1.Image = (bm)
Picture1.CreateGraphics.DrawLine(Pens.Black, oldX, oldY, e.X, e.Y)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
oldX = -1 : oldY = -1
End Sub
End Class
Qualcuno saprebbe aiutarmi?....Grazie mille a tutti...