ThinkGeo.com    |     Documentation    |     Premium Support

How to control the Zoom based on the Mouse Wheel evevt

Hi ThinkGeo,


By Default, on  Mouse wheel rotate will lead to several levels lead to full zooom in/out.


How to control the zoom level if the user rotates mouse wheel very fast?


I tried to set  

Regards,


Anil


 


 


 



MouseWheelEventArgs.Handled = true if the time interval between two events is very small say 200 in the handler for PreviewMouseWheel event. This does filter out the actual MouseWheelEvent firing. Is there a better way?



Hi Anil,



My method is kind like yours; but I did it by rewriting a new ExtentInteractiveOverlay. Here is the code. Hope it helps.

public class CustomExtentInteractiveOverlay : ExtentInteractiveOverlay
{
    private DispatcherTimer timer;

    public CustomExtentInteractiveOverlay()
    {
        timer = new DispatcherTimer();
        timer.Tick += (o, e) => { ((DispatcherTimer)o).Stop(); };
        timer.Interval = TimeSpan.FromMilliseconds(200);
    }

    protected override InteractiveResult MouseWheelCore(InteractionArguments interactionArguments)
    {
        InteractiveResult result = base.MouseWheelCore(interactionArguments);
        if (timer.IsEnabled)
        {
            result.NewCurrentExtent = null;
            timer.Stop();
        }

        timer.Start();
        return result;
    }
}



Here is the code to use it.

Map1.ExtentOverlay = new CustomExtentInteractiveOverlay();


Please let me know if you have more queries.



Thanks,

Howard