Ejemplo n.º 1
0
        private void geoImage_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            var mousePosition = e.GetPosition(geoImage);

            if (((WriteableBitmap)geoImage.Source).GetPixel((int)mousePosition.X, (int)mousePosition.Y) == editColor)
            {
                // Edit mode and user rightclicked an edit point
                LatLongRegion      foundRegion = null;
                LatLongDegreePoint hitPoint    = FindHitPoint(mousePosition, out foundRegion);
                if (hitPoint != null)
                {
                    var msg = LatLongUtil.GetLatLongStringFromPoint(new Point(hitPoint.X, hitPoint.Y));
                    if (foundRegion != null)
                    {
                        msg += "\nRegion: " + foundRegion.Name
                               + "\nColor code: " + foundRegion.ColorName;
                    }
                    MessageBox.Show(msg);
                }
            }
            else
            {
                // Enter pan mode
                origin      = e.GetPosition(this);
                this.Cursor = Cursors.Hand;
                geoImage.CaptureMouse();
            }
        }
Ejemplo n.º 2
0
        // Find the nearest point that was just clicked on by the user
        private LatLongDegreePoint FindHitPoint(Point mousePosition, out LatLongRegion foundRegion)
        {
            var bitmap = (WriteableBitmap)geoImage.Source;

            foundRegion = null;
            LatLongDegreePoint foundPoint = null;

            foreach (var r in regions)
            {
                foundPoint = r.Coordinates.Find(point => Math.Abs(point.X - mousePosition.X) < editPointDelta && Math.Abs(point.Y - mousePosition.Y) < editPointDelta);
                if (foundPoint != null)
                {
                    foundRegion = r;
                    break;
                }
            }

            return(foundPoint);
        }