public ProgressBar() { this.DoubleBuffered = true; InitializeComponent(); //SetStyle(ControlStyles.OptimizedDoubleBuffer, true); numSteps = 20; estTotalTime = 0; stepTimes = new int[numSteps]; stepColors = new int[numSteps]; progressBars = new List <ProgressElement>(); // generate progress elements = numSteps ResetProgress(); OverlayRectangle.BringToFront(); }
private void DragImage_OnMouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { // Get the control under the mouse var point = System.Windows.Forms.Cursor.Position; var window = Win32.WindowFromPoint(point); // Go down the parents IntPtr parent; while ((parent = Win32.GetParent(window)) != IntPtr.Zero) { window = parent; } // Check for itself var selfHandle = new WindowInteropHelper(GetWindow(this)).Handle; if (selfHandle == window) { // Don't use itself window = IntPtr.Zero; } Win32.GetWindowRect(window, out var rect); var rectangle = new Rectangle(rect.Left, rect.Top, rect.Right - rect.Left, rect.Bottom - rect.Top); if (_lastWindowHandle == IntPtr.Zero) { _lastOverlay = new OverlayRectangle(rectangle); } else if (window != _lastWindowHandle) { _lastOverlay.Dispose(); if (window != IntPtr.Zero) { _lastOverlay = new OverlayRectangle(rectangle); } } _lastWindowHandle = window; } }