diff --git a/Wardrobe/GUI.vb b/Wardrobe/GUI.vb index a82e9fb..0aa90b0 100644 --- a/Wardrobe/GUI.vb +++ b/Wardrobe/GUI.vb @@ -16,7 +16,7 @@ Public Class GUI Dim points As New Dictionary(Of String, Decimal()) Dim pointsOrder As New List(Of String) - 'Dim PointButtons As New Dictionary(Of String, Button) + Dim PointButtons As New List(Of Button) ' --- Start method when GUI loads --- Sub GUI_load() Handles MyBase.Load @@ -29,31 +29,6 @@ Public Class GUI Set_ContainerPointsY() Create_StartPoints() - - Temp_Create_PointButton() - End Sub - - ' --- TEMP --- - Private Sub Temp_Create_PointButton() - Dim PointButton As New Button - PointButton.Top = 15 - PointButton.Left = 15 - PointButton.Width = 30 - PointButton.Height = 30 - PointButton.Name = "PointButton" - PointButton.Text = "" - - PointButton.BackColor = Color.Transparent - PointButton.FlatStyle = FlatStyle.Flat - PointButton.FlatAppearance.BorderSize = 0 - PointButton.FlatAppearance.MouseOverBackColor = Color.Red - PointButton.FlatAppearance.MouseDownBackColor = Color.DarkRed - - Dim gp As New Drawing.Drawing2D.GraphicsPath - gp.AddEllipse(New Rectangle(New Point(0, 0), New Size(30, 30))) - PointButton.Region = New Region(gp) - - containerPanel.Controls.Add(PointButton) End Sub ' --- Retrive parameters for the drawing box --- @@ -189,9 +164,38 @@ Public Class GUI ' --- When angle button is pressed --- Private Sub AngleButton_Click(sender As Object, e As EventArgs) Handles AngleButton.Click + ' Create Buttons for all clickable points + For i = 0 To pointsOrder.Count - 1 + PointButtons.Add(New Button) + + PointButtons(i).Width = 30 + PointButtons(i).Height = 30 + + PointButtons(i).Left = points(pointsOrder(i))(0) - PointButtons(i).Width / 2 + PointButtons(i).Top = points(pointsOrder(i))(1) - PointButtons(i).Height / 2 + + PointButtons(i).Name = pointsOrder(i) & "_Button" + PointButtons(i).Text = "" + + PointButtons(i).BackColor = Color.FromArgb(50, Color.Red) + PointButtons(i).FlatStyle = FlatStyle.Flat + PointButtons(i).FlatAppearance.BorderSize = 0 + PointButtons(i).FlatAppearance.MouseOverBackColor = Color.Red + PointButtons(i).FlatAppearance.MouseDownBackColor = Color.DarkRed + + Dim gp As New Drawing.Drawing2D.GraphicsPath + gp.AddEllipse(New Rectangle(New Point(0, 0), New Size(30, 30))) + PointButtons(i).Region = New Region(gp) + + containerPanel.Controls.Add(PointButtons(i)) + + AddHandler PointButtons(i).Click, AddressOf Me.PointButton_Click + Next + End Sub + + Private Sub PointButton_Click(sender As Button, e As EventArgs) 'Determine which point is being pressed - Dim pointPressed As String - pointPressed = "p1" ' Fix this + Dim pointPressed As String = sender.Name.Split("_")(0) Dim index As Integer = pointsOrder.IndexOf(pointPressed) 'Retrive that points coords @@ -199,17 +203,41 @@ Public Class GUI tempX = points(pointPressed)(0) tempY = points(pointPressed)(1) - 'Insert two new points - points.Add("pT1", {tempX, tempY + 80, 0, 0}) - pointsOrder.Insert(index + 1, "pT1") - points.Add("pT2", {tempX + 50, tempY, 0, 0}) - pointsOrder.Insert(index + 2, "pT2") + Dim d1, d2 As Integer 'Kommer anges som double i SW coord men vi vill ha pixel coord här + d1 = 80 + d2 = 50 + If tempX < containerMidX Then + If tempY > containerMidY Then + 'Kvadrant 4 + points.Add("pA1", {tempX + d1, tempY, 0, 0}) + points.Add("pA2", {tempX, tempY - d2, 0, 0}) + Else + 'Kvadrant 1 + points.Add("pA1", {tempX, tempY + d2, 0, 0}) + points.Add("pA2", {tempX + d1, tempY, 0, 0}) + End If + Else + If tempY > containerMidY Then + 'Kvadrant 3 + points.Add("pA1", {tempX, tempY - d2, 0, 0}) + points.Add("pA2", {tempX - d1, tempY, 0, 0}) + Else + 'Kvadrant 2 + points.Add("pA1", {tempX - d1, tempY, 0, 0}) + points.Add("pA2", {tempX, tempY + d2, 0, 0}) + End If + End If + 'Insert two new points + pointsOrder.Insert(index + 1, "pA1") + pointsOrder.Insert(index + 2, "pA2") pointsOrder.RemoveAt(index) - 'Fix those points coords - - 'Add those points in pointsOrder and remove orignal point + 'Remove points buttons + For i = 0 To PointButtons.Count - 1 + RemoveHandler PointButtons(i).Click, AddressOf Me.PointButton_Click + containerPanel.Controls.RemoveByKey(PointButtons(i).Name) + Next 'Redraw grating Me.Refresh()