コード例 #1
0
ファイル: EditCourses.cs プロジェクト: IanMadlenya/VisualSail
        private bool TryFindCloseBouy(Point p, ref Bouy closest)
        {
            List <Bouy> bouys = new List <Bouy>();

            foreach (object o in marksLB.Items)
            {
                bouys.AddRange(((Mark)o).Bouys);
            }
            double maximumDistance = 10.0;
            double closestDistance = maximumDistance;
            Bouy   closestBouy     = null;

            foreach (Bouy b in bouys)
            {
                Point  onScreen = CoordinatesToScreen(new CoordinatePoint(b.Latitude, b.Longitude, 0));
                double distance = TwoDimensionalDistance(p.X, p.Y, onScreen.X, onScreen.Y);
                if (distance < closestDistance)
                {
                    closestDistance = distance;
                    closestBouy     = b;
                }
            }
            if (closestBouy != null)
            {
                closest = closestBouy;
                return(true);
            }
            else
            {
                closest = null;
                return(false);
            }
        }
コード例 #2
0
ファイル: EditCourses.cs プロジェクト: IanMadlenya/VisualSail
 private void markTypeCB_SelectedIndexChanged(object sender, EventArgs e)
 {
     SelectedMark.MarkType = (string)markTypeCB.SelectedItem;
     if (SelectedMark.MarkType == "Gate")
     {
         if (SelectedMark.Bouys.Count < 2)
         {
             while (SelectedMark.Bouys.Count < 2)
             {
                 Bouy b = NewBouy(SelectedMark);
                 b.Save();
             }
         }
     }
     else if (SelectedMark.MarkType == "Mark")
     {
         if (SelectedMark.Bouys.Count > 1)
         {
             while (SelectedMark.Bouys.Count > 1)
             {
                 SelectedMark.Bouys[SelectedMark.Bouys.Count - 1].Delete();
             }
         }
     }
     SelectedMark.Save();
     lakePNL.Invalidate();
 }
コード例 #3
0
ファイル: EditCourses.cs プロジェクト: IanMadlenya/VisualSail
 private void lakePNL_MouseMove(object sender, MouseEventArgs e)
 {
     if (_mouseDown)
     {
         if (zoomInCB.Checked)
         {
             _zoomSecondPoint = new Point(e.X, e.Y);
             lakePNL.Invalidate();
         }
         else if (SelectedMark != null && _selectedBouy != null)
         {
             Point           mp = new Point(e.X, e.Y);
             CoordinatePoint cp = ScreenToCoordinates(mp);
             _selectedBouy.Longitude = cp.Longitude;
             _selectedBouy.Latitude  = cp.Latitude;
             _selectedBouy.Save();
             lakePNL.Invalidate();
             mouseCoordsLBL.Text = _selectedBouy.Latitude.ToString() + " " + _selectedBouy.Longitude.ToString();
         }
     }
     else if (!zoomInCB.Checked)
     {
         Bouy b = null;
         if (TryFindCloseBouy(new Point(e.X, e.Y), ref b))
         {
             lakePNL.Cursor = Cursors.Hand;
         }
         else
         {
             lakePNL.Cursor = Cursors.Default;
         }
     }
 }
コード例 #4
0
ファイル: EditCourses.cs プロジェクト: IanMadlenya/VisualSail
        private Bouy NewBouy(Mark m)
        {
            CoordinatePoint bouyC = ScreenToCoordinates(new Point(lakePNL.Width / 2, lakePNL.Height / 2));
            Bouy            b     = new Bouy(m, bouyC.Latitude, bouyC.Longitude);

            b.Save();
            return(b);
        }
コード例 #5
0
ファイル: EditCourses.cs プロジェクト: IanMadlenya/VisualSail
        private void addBTN_Click(object sender, EventArgs e)
        {
            Mark m = new Mark("New Mark", "Mark", _course);

            m.Save();

            double lakeWidth  = _lake.West - _lake.East;
            double lakeHeight = _lake.North - _lake.South;

            Bouy b = NewBouy(m);

            marksLB.Items.Add(m);
            marksLB.SelectedIndex = marksLB.Items.Count - 1;
        }
コード例 #6
0
ファイル: EditCourses.cs プロジェクト: IanMadlenya/VisualSail
        private void FindClosestBouy(Point p)
        {
            Bouy b = null;

            if (TryFindCloseBouy(p, ref b))
            {
                _selectedBouy = b;
                for (int i = 0; i < marksLB.Items.Count; i++)
                {
                    if (((Mark)marksLB.Items[i]).Id == b.Mark.Id)
                    {
                        marksLB.SelectedIndex = i;
                    }
                }
            }
        }
コード例 #7
0
ファイル: EditCourses.cs プロジェクト: IanMadlenya/VisualSail
 private void LoadSelectedMark()
 {
     if (SelectedMark != null)
     {
         editMarkGB.Enabled      = true;
         removeBTN.Enabled       = true;
         markNameTB.Text         = SelectedMark.Name;
         markTypeCB.SelectedItem = SelectedMark.MarkType;
         mouseCoordsLBL.Text     = SelectedMark.Bouys[0].Latitude.ToString() + " " + SelectedMark.Bouys[0].Longitude.ToString();
         _selectedBouy           = SelectedMark.Bouys[0];
         lakePNL.Invalidate();
     }
     else
     {
         editMarkGB.Enabled = false;
         removeBTN.Enabled  = false;
     }
 }