Example #1
0
 private void MapImage_MouseDown(object sender, MouseEventArgs e)
 {
     _panOrQueryIsPan = false;
     if (_map != null)
     {
         if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Middle) //dragging
         {
             _mousedrag = e.Location;
         }
         if (MouseDown != null)
         {
             MouseDown(_map.ImageToWorld(new System.Drawing.Point(e.X, e.Y), true), e);
         }
     }
 }
Example #2
0
        private void MapImage_MouseUp(object sender, MouseEventArgs e)
        {
            if (_map != null)
            {
                if (MouseUp != null)
                    MouseUp(_map.ImageToWorld(new System.Drawing.Point(e.X, e.Y), true), e);

                if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Middle)
                {
                    if (ActiveTool == Tools.ZoomOut)
                    {
                        double scale = 0.5;
                        if (!_mousedragging)
                        {
                            _map.Center = _map.ImageToWorld(new System.Drawing.Point(e.X, e.Y), true);
                            if (MapCenterChanged != null)
                                MapCenterChanged(_map.Center);
                        }
                        else
                        {
                            if (e.Y - _mousedrag.Y < 0) //Zoom out
                                scale = (float)Math.Pow(1 / (float)(_mousedrag.Y - e.Y), 0.5);
                            else //Zoom in
                                scale = 1 + (e.Y - _mousedrag.Y) * 0.1;
                        }
                        _map.Zoom *= 1 / scale;
                        if (MapZoomChanged != null)
                            MapZoomChanged(_map.Zoom);
                        Refresh();
                    }
                    else if (ActiveTool == Tools.ZoomIn)
                    {
                        double scale = 2;
                        if (!_mousedragging)
                        {
                            _map.Center = _map.ImageToWorld(new System.Drawing.Point(e.X, e.Y), true);
                            if (MapCenterChanged != null)
                                MapCenterChanged(_map.Center);
                        }
                        else
                        {
                            if (e.Y - _mousedrag.Y < 0) //Zoom out
                                scale = (float)Math.Pow(1 / (float)(_mousedrag.Y - e.Y), 0.5);
                            else //Zoom in
                                scale = 1 + (e.Y - _mousedrag.Y) * 0.1;
                        }
                        _map.Zoom *= 1 / scale;
                        if (MapZoomChanged != null)
                            MapZoomChanged(_map.Zoom);
                        Refresh();
                    }
                    else if (ActiveTool == Tools.Pan || (ActiveTool == Tools.PanOrQuery && _panOrQueryIsPan))
                    {
                        if (_mousedragging)
                        {
                            System.Drawing.Point pnt = new System.Drawing.Point(Width / 2 + (_mousedrag.X - e.Location.X),
                                                                                Height / 2 + (_mousedrag.Y - e.Location.Y));
                            _map.Center = _map.ImageToWorld(pnt, true);
                            if (MapCenterChanged != null)
                                MapCenterChanged(_map.Center);
                        }
                        else if(_panOnClick && !_zoomOnDblClick)
                        {
                            _map.Center = _map.ImageToWorld(new System.Drawing.Point(e.X, e.Y), true);
                            if (MapCenterChanged != null)
                                MapCenterChanged(_map.Center);
                        }
                        Refresh();
                    }
                    else if (ActiveTool == Tools.Query || (ActiveTool == Tools.PanOrQuery && !_panOrQueryIsPan))
                    {
                        if (_queryLayerIndex < 0)
                            MessageBox.Show("No active layer to query");
                        else if (_queryLayerIndex < _map.Layers.Count)
                            QueryLayer(_map.Layers[_queryLayerIndex], new PointF(e.X, e.Y));
                        else if(_queryLayerIndex - Map.Layers.Count < _map.VariableLayers.Count)
                            QueryLayer(_map.VariableLayers[_queryLayerIndex - Map.Layers.Count], new PointF(e.X, e.Y));
                        else
                            MessageBox.Show("No active layer to query");
                    }
                }
                if (_mousedragImg != null)
                {
                    _mousedragImg.Dispose();
                    _mousedragImg = null;
                }
                _mousedragging = false;
            }
        }
Example #3
0
 private void MapImage_MouseDown(object sender, MouseEventArgs e)
 {
     _panOrQueryIsPan = false;
     if (_map != null)
     {
         if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Middle) //dragging
             _mousedrag = e.Location;
         if (MouseDown != null)
             MouseDown(_map.ImageToWorld(new System.Drawing.Point(e.X, e.Y), true), e);
     }
 }
Example #4
0
        private void MapImage_MouseUp(object sender, MouseEventArgs e)
        {
            if (_map != null)
            {
                if (MouseUp != null)
                {
                    MouseUp(_map.ImageToWorld(new System.Drawing.Point(e.X, e.Y), true), e);
                }

                if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Middle)
                {
                    if (ActiveTool == Tools.ZoomOut)
                    {
                        double scale = 0.5;
                        if (!_mousedragging)
                        {
                            _map.Center = _map.ImageToWorld(new System.Drawing.Point(e.X, e.Y), true);
                            if (MapCenterChanged != null)
                            {
                                MapCenterChanged(_map.Center);
                            }
                        }
                        else
                        {
                            if (e.Y - _mousedrag.Y < 0) //Zoom out
                            {
                                scale = (float)Math.Pow(1 / (float)(_mousedrag.Y - e.Y), 0.5);
                            }
                            else //Zoom in
                            {
                                scale = 1 + (e.Y - _mousedrag.Y) * 0.1;
                            }
                        }
                        _map.Zoom *= 1 / scale;
                        if (MapZoomChanged != null)
                        {
                            MapZoomChanged(_map.Zoom);
                        }
                        Refresh();
                    }
                    else if (ActiveTool == Tools.ZoomIn)
                    {
                        double scale = 2;
                        if (!_mousedragging)
                        {
                            _map.Center = _map.ImageToWorld(new System.Drawing.Point(e.X, e.Y), true);
                            if (MapCenterChanged != null)
                            {
                                MapCenterChanged(_map.Center);
                            }
                        }
                        else
                        {
                            if (e.Y - _mousedrag.Y < 0) //Zoom out
                            {
                                scale = (float)Math.Pow(1 / (float)(_mousedrag.Y - e.Y), 0.5);
                            }
                            else //Zoom in
                            {
                                scale = 1 + (e.Y - _mousedrag.Y) * 0.1;
                            }
                        }
                        _map.Zoom *= 1 / scale;
                        if (MapZoomChanged != null)
                        {
                            MapZoomChanged(_map.Zoom);
                        }
                        Refresh();
                    }
                    else if (ActiveTool == Tools.Pan || (ActiveTool == Tools.PanOrQuery && _panOrQueryIsPan))
                    {
                        if (_mousedragging)
                        {
                            System.Drawing.Point pnt = new System.Drawing.Point(Width / 2 + (_mousedrag.X - e.Location.X),
                                                                                Height / 2 + (_mousedrag.Y - e.Location.Y));
                            _map.Center = _map.ImageToWorld(pnt, true);
                            if (MapCenterChanged != null)
                            {
                                MapCenterChanged(_map.Center);
                            }
                        }
                        else if (_panOnClick && !_zoomOnDblClick)
                        {
                            _map.Center = _map.ImageToWorld(new System.Drawing.Point(e.X, e.Y), true);
                            if (MapCenterChanged != null)
                            {
                                MapCenterChanged(_map.Center);
                            }
                        }
                        Refresh();
                    }
                    else if (ActiveTool == Tools.Query || (ActiveTool == Tools.PanOrQuery && !_panOrQueryIsPan))
                    {
                        if (_queryLayerIndex < 0)
                        {
                            MessageBox.Show("No active layer to query");
                        }
                        else if (_queryLayerIndex < _map.Layers.Count)
                        {
                            QueryLayer(_map.Layers[_queryLayerIndex], new PointF(e.X, e.Y));
                        }
                        else if (_queryLayerIndex - Map.Layers.Count < _map.VariableLayers.Count)
                        {
                            QueryLayer(_map.VariableLayers[_queryLayerIndex - Map.Layers.Count], new PointF(e.X, e.Y));
                        }
                        else
                        {
                            MessageBox.Show("No active layer to query");
                        }
                    }
                }
                if (_mousedragImg != null)
                {
                    _mousedragImg.Dispose();
                    _mousedragImg = null;
                }
                _mousedragging = false;
            }
        }