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); } }); }
internal static PhysicalPoint PointSum(params PhysicalPoint[] args) { var result = new PhysicalPoint(); if (args.Length == 0) { return(result); } result = args.Aggregate(result, Summ); return(result); }
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); }