コード例 #1
0
        private void ObserveInput(CanvasShape canvasShape, IControl target)
        {
            canvasShape.Downs = Observable.FromEventPattern <PointerPressedEventArgs>(
                target,
                "PointerPressed").Select(e =>
            {
                var p = e.EventArgs.GetPosition(target);
                return(new Point2(
                           canvasShape.EnableSnap ? canvasShape.Snap(p.X, canvasShape.SnapX) : p.X,
                           canvasShape.EnableSnap ? canvasShape.Snap(p.Y, canvasShape.SnapY) : p.Y));
            });

            canvasShape.Ups = Observable.FromEventPattern <PointerReleasedEventArgs>(
                target,
                "PointerReleased").Select(e =>
            {
                var p = e.EventArgs.GetPosition(target);
                return(new Point2(
                           canvasShape.EnableSnap ? canvasShape.Snap(p.X, canvasShape.SnapX) : p.X,
                           canvasShape.EnableSnap ? canvasShape.Snap(p.Y, canvasShape.SnapY) : p.Y));
            });

            canvasShape.Moves = Observable.FromEventPattern <PointerEventArgs>(
                target,
                "PointerMoved").Select(e =>
            {
                var p = e.EventArgs.GetPosition(target);
                return(new Point2(
                           canvasShape.EnableSnap ? canvasShape.Snap(p.X, canvasShape.SnapX) : p.X,
                           canvasShape.EnableSnap ? canvasShape.Snap(p.Y, canvasShape.SnapY) : p.Y));
            });

            bool captured = false;

            canvasShape.IsCaptured = () => captured;

            canvasShape.Capture = () => captured = true;

            canvasShape.ReleaseCapture = () => captured = false;
        }
コード例 #2
0
        private void ObserveInput(CanvasShape canvasShape, UIElement target)
        {
            canvasShape.Downs = Observable.FromEventPattern <MouseButtonEventArgs>(
                target,
                "PreviewMouseLeftButtonDown").Select(e =>
            {
                var p = e.EventArgs.GetPosition(target);
                return(new Point2(
                           canvasShape.EnableSnap ? canvasShape.Snap(p.X, canvasShape.SnapX) : p.X,
                           canvasShape.EnableSnap ? canvasShape.Snap(p.Y, canvasShape.SnapY) : p.Y));
            });

            canvasShape.Ups = Observable.FromEventPattern <MouseButtonEventArgs>(
                target,
                "PreviewMouseLeftButtonUp").Select(e =>
            {
                var p = e.EventArgs.GetPosition(target);
                return(new Point2(
                           canvasShape.EnableSnap ? canvasShape.Snap(p.X, canvasShape.SnapX) : p.X,
                           canvasShape.EnableSnap ? canvasShape.Snap(p.Y, canvasShape.SnapY) : p.Y));
            });

            canvasShape.Moves = Observable.FromEventPattern <MouseEventArgs>(
                target,
                "PreviewMouseMove").Select(e =>
            {
                var p = e.EventArgs.GetPosition(target);
                return(new Point2(
                           canvasShape.EnableSnap ? canvasShape.Snap(p.X, canvasShape.SnapX) : p.X,
                           canvasShape.EnableSnap ? canvasShape.Snap(p.Y, canvasShape.SnapY) : p.Y));
            });

            canvasShape.IsCaptured = () => Mouse.Captured == target;

            canvasShape.Capture = () => target.CaptureMouse();

            canvasShape.ReleaseCapture = () => target.ReleaseMouseCapture();
        }