Piccolo Snippets
From eqqon
(Difference between revisions)
m (Piccolo Nuts and Bolts moved to Piccolo Snippets) |
m (→MouseWheelScrollController) |
||
Line 1: | Line 1: | ||
= Useful Piccolo Extensions = | = Useful Piccolo Extensions = | ||
- | == | + | == Mouse Wheel Zoom == |
- | + | The class '''MouseWheelZoomController''' replaces Piccolo's not very intuitive default zoom event handler with a mouse wheel zoom event handler. Just instantiate it and mouse wheel zooming just works with your Piccolo canvas! | |
<pre> | <pre> |
Revision as of 07:12, 29 October 2007
Useful Piccolo Extensions
Mouse Wheel Zoom
The class MouseWheelZoomController replaces Piccolo's not very intuitive default zoom event handler with a mouse wheel zoom event handler. Just instantiate it and mouse wheel zooming just works with your Piccolo canvas!
public class MouseWheelZoomController { public static float MIN_SCALE = .0001f; public static float MAX_SCALE = 2500; PCamera camera; public MouseWheelZoomController(PCamera camera) { this.camera = camera; camera.Canvas.ZoomEventHandler = null; camera.MouseWheel += OnMouseWheel; } public void OnMouseWheel(object o, PInputEventArgs ea) { float currentScale = camera.ViewScale; float scaleDelta = (1.0f + (0.001f * ea.WheelDelta)); float newScale = currentScale * scaleDelta; if (newScale < MIN_SCALE) { camera.ViewScale = MIN_SCALE; return; } if ((MAX_SCALE > 0) && (newScale > MAX_SCALE)) { camera.ViewScale = MAX_SCALE; return; } PointF pos = ea.Position; camera.ScaleViewBy(scaleDelta, pos.X, pos.Y); } }