/// <summary> /// Makes a transparent window which adjust it's size and position to fit the parent window /// </summary> /// <param name="parent">HWND/Handle of a window</param> /// <param name="limitFps">VSync</param> /// <exception cref="Exception"> /// The handle of the parent window isn't valid /// or /// Could not create OverlayWindow /// </exception> public DirectXOverlayWindow(IntPtr parent, bool limitFps = true) { if (parent == IntPtr.Zero) { throw new Exception("The handle of the parent window isn't valid"); } GetWindowRect(parent, out var bounds); IsDisposing = false; IsVisible = true; IsTopMost = true; ParentWindowExists = true; X = bounds.Left; Y = bounds.Top; Width = bounds.Right - bounds.Left; Height = bounds.Bottom - bounds.Top; ParentWindow = parent; if (!CreateWindow()) { throw new Exception("Could not create OverlayWindow"); } Graphics = new Direct2DRenderer(Handle, limitFps); SetBounds(X, Y, Width, Height); }
/// <summary> /// Makes a transparent Fullscreen window /// </summary> /// <param name="limitFps">VSync</param> /// <exception cref="Exception">Could not create OverlayWindow</exception> public DirectXOverlayWindow(bool limitFps = true) { IsDisposing = false; IsVisible = true; IsTopMost = true; ParentWindowExists = false; X = 0; Y = 0; Width = GetSystemMetrics(WindowConstants.SmCxScreen); Height = GetSystemMetrics(WindowConstants.SmCyScreen); ParentWindow = IntPtr.Zero; if (!CreateWindow()) { throw new Exception("Could not create OverlayWindow"); } Graphics = new Direct2DRenderer(Handle, limitFps); SetBounds(X, Y, Width, Height); }