Imports System.Windows.Forms
Public Class CopyPointsDialog
Private StartItem, EndItem As FillableItem
Public ReadOnly Property FinalItem() As FillableItem
Get
Return EndItem
End Get
End Property
Sub New(ByVal Item As FillableItem)
Me.InitializeComponent()
Me.StartItem = Item
If TypeOf Item Is PointConnectionItem Then
If TypeOf Item Is ClosedCurve Then
Me.EndItem = New ClosedCurve
ElseIf TypeOf Item Is ClosedLine Then
Me.EndItem = New ClosedLine
End If
For I As Int32 = 0 To DirectCast(Item, PointConnectionItem).Points.Count - 1
lstPoints.Items.Add("Punto " & I)
Next
Else
Me.EndItem = New Mix
Dim Temp As Mix = Item
For I As Int32 = 0 To Temp.Points.Count - 1
lstPoints.Items.Add("Punto " & I & " (" & IIf(Temp.Points(I).BelongsToCurve, "Curva", "Spezzata") & ")")
Next
End If
For I As Int32 = 0 To lstPoints.Items.Count - 1
lstPoints.SetItemChecked(I, True)
Next
imgPreviewStart.Refresh()
imgPreviewEnd.Refresh()
With Me.EndItem
.DrawOutline = StartItem.DrawOutline
.Fill = StartItem.Fill
.Color = StartItem.Color
.FillColor = StartItem.FillColor
.Width = StartItem.Width
End With
End Sub
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
If lstPoints.CheckedIndices.Count = 0 Then
MessageBox.Show("Selezionare almeno un punto!", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Exit Sub
End If
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
End Sub
Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Close()
End Sub
Private Sub imgPreview_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles imgPreviewStart.Paint
e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
StartItem.DrawPreview(e.Graphics, New Rectangle(0, 0, imgPreviewStart.Width - 1, imgPreviewStart.Height - 1))
End Sub
Private Sub lstPoints_ItemCheck(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles lstPoints.ItemCheck
If TypeOf EndItem Is PointConnectionItem Then
Dim Temp As PointConnectionItem = EndItem
Dim Start As PointConnectionItem = StartItem
Temp.Points.Clear()
For I As Int32 = 0 To lstPoints.Items.Count - 1
If I = e.Index Then
If e.NewValue Then
Temp.Points.Add(Start.Points(I))
End If
Continue For
End If
If lstPoints.GetItemChecked(I) Then
Temp.Points.Add(Start.Points(I))
End If
Next
EndItem = Temp
Else
Dim Temp As Mix = EndItem
Dim Start As Mix = StartItem
Temp.Points.Clear()
For I As Int32 = 0 To lstPoints.Items.Count - 1
If I = e.Index Then
If e.NewValue Then
Temp.Points.Add(Start.Points(I))
End If
Continue For
End If
If lstPoints.GetItemChecked(I) Then
Temp.Points.Add(Start.Points(I))
End If
Next
EndItem = Temp
End If
imgPreviewStart.Refresh()
imgPreviewEnd.Refresh()
End Sub
Private Sub imgPreviewEnd_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles imgPreviewEnd.Paint
e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
EndItem.DrawPreview(e.Graphics, New Rectangle(0, 0, imgPreviewStart.Width - 1, imgPreviewStart.Height - 1))
End Sub
End Class