public EventToReactiveProperty2ViewModel()
 {
     // 前回と最新のマウス位置の差分を流す
     MouseMovePoint
     .Pairwise()
     .Select(x => (x.NewItem - x.OldItem))
     .SkipUntil(MouseDownUnit)
     .TakeUntil(MouseUpUnit)
     .Finally(() => DragPoint.Value = default)
Exemplo n.º 2
0
        private void MouseMoveHandler(object sender, MouseEventArgs e)
        {
            Control                source                   = (Control)sender;
            MouseButtons           button                   = e.Button;
            int                    clicks                   = e.Clicks;
            int                    delta                    = e.Delta;
            Point                  location                 = e.Location;
            Point                  point2                   = source.PointToScreen(location);
            int                    inputMessageTime         = UIUtil.GetInputMessageTime();
            MouseMovePoint         latestMovePoint          = new MouseMovePoint(point2.X, point2.Y, inputMessageTime);
            IList <MouseMovePoint> intermediateScreenPoints = GetIntermediateScreenPoints(this.previousMovePoint, latestMovePoint);
            IList <PointDouble>    intermediatePoints       = this.ConvertIntermediateScreenPointsToDocument(source, intermediateScreenPoints);

            this.previousMovePoint = new MouseMovePoint?(latestMovePoint);
            this.MouseMoveHandlerImpl(intermediatePoints.Last <PointDouble>(), button, clicks, delta, intermediatePoints);
        }
Exemplo n.º 3
0
        private static IList <MouseMovePoint> GetIntermediateScreenPoints(MouseMovePoint?previousMovePoint, MouseMovePoint latestMovePoint)
        {
            List <MouseMovePoint> list = new List <MouseMovePoint>();

            if (previousMovePoint.HasValue)
            {
                IList <MouseMovePoint> collection = UIUtil.TryGetMouseMoveScreenPoints(previousMovePoint.Value, latestMovePoint);
                if (collection != null)
                {
                    list.AddRange(collection);
                }
            }
            if (list.Count == 0)
            {
                list.Add(latestMovePoint);
            }
            return(list);
        }