예제 #1
0
        private void HookManagerOnMouseMove(PhysicalPoint next)
        {
            var bounds       = DwmHelper.GetWindowBounds(WindowPointer);
            var withinPaintX = next.X >= bounds.Left && next.X <= bounds.Right;
            var withinPaintY = next.Y >= bounds.Top && next.Y <= bounds.Bottom;

            Highlighter.Dispatcher.Invoke(() =>
            {
                var dpiRatio = bounds.Width / Highlighter.Width;

                if (withinPaintX && withinPaintY)
                {
                    Canvas.SetTop(Highlighter.Lighter, (next.Y - bounds.Top - Highlighter.Lighter.Height / 2) / dpiRatio);
                    Canvas.SetLeft(Highlighter.Lighter, (next.X - bounds.Left - Highlighter.Lighter.Width / 2) / dpiRatio);
                }
                else
                {
                    var screen = Screen.FromPoint(new Point(next.X, next.Y));
                    DwmHelper.MoveWindow(WindowPointer, screen.Bounds.X, screen.Bounds.Y, screen.Bounds.Width, screen.Bounds.Height);

                    Canvas.SetTop(Highlighter.Lighter, (0 - Highlighter.Lighter.Height) / dpiRatio);
                    Canvas.SetLeft(Highlighter.Lighter, (0 - Highlighter.Lighter.Width) / dpiRatio);
                }
            });
        }
예제 #2
0
        internal static PhysicalPoint PointSum(params PhysicalPoint[] args)
        {
            var result = new PhysicalPoint();

            if (args.Length == 0)
            {
                return(result);
            }
            result = args.Aggregate(result, Summ);
            return(result);
        }
예제 #3
0
 private static PhysicalPoint Summ(PhysicalPoint vector1, PhysicalPoint vector2)
 {
     return(new PhysicalPoint(vector1.X + vector2.X, vector1.Y + vector2.Y));
 }
 private void HookManagerOnMouseMove(PhysicalPoint next)
 {
     DwmHelper.MoveWindow(WindowPointer, next.X, next.Y);
 }