12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Windows;
- using System.Windows.Forms;
- using System.Windows.Interop;
- using Point = System.Windows.Point;
- namespace InABox.DynamicGrid
- {
- public class WpfScreen
- {
- private readonly Screen screen;
- internal WpfScreen(Screen screen)
- {
- this.screen = screen;
- }
- public static WpfScreen Primary => new(Screen.PrimaryScreen);
- public Rect DeviceBounds => GetRect(screen.Bounds);
- public Rect WorkingArea => GetRect(screen.WorkingArea);
- public bool IsPrimary => screen.Primary;
- public string DeviceName => screen.DeviceName;
- public static IEnumerable<WpfScreen> AllScreens()
- {
- foreach (var screen in Screen.AllScreens) yield return new WpfScreen(screen);
- }
- public static WpfScreen GetScreenFrom(Window window)
- {
- var windowInteropHelper = new WindowInteropHelper(window);
- var screen = Screen.FromHandle(windowInteropHelper.Handle);
- var wpfScreen = new WpfScreen(screen);
- return wpfScreen;
- }
- public static WpfScreen GetScreenFrom(Point point)
- {
- var x = (int)Math.Round(point.X);
- var y = (int)Math.Round(point.Y);
- // are x,y device-independent-pixels ??
- var drawingPoint = new System.Drawing.Point(x, y);
- var screen = Screen.FromPoint(drawingPoint);
- var wpfScreen = new WpfScreen(screen);
- return wpfScreen;
- }
- private Rect GetRect(Rectangle value)
- {
- // should x, y, width, height be device-independent-pixels ??
- return new Rect
- {
- X = value.X,
- Y = value.Y,
- Width = value.Width,
- Height = value.Height
- };
- }
- public static void CenterWindowOnScreen(Window window)
- {
- var screen = GetScreenFrom(window);
- var screenWidth = screen.WorkingArea.Width;
- var screenHeight = screen.WorkingArea.Height;
- var windowWidth = window.Width;
- var windowHeight = window.Height;
- window.Left = screenWidth / 2 - windowWidth / 2;
- window.Top = screenHeight / 2 - windowHeight / 2;
- }
- }
- }
|