public ScreenRecordForm(Rectangle regionRectangle, bool activateWindow = true, float duration = 0) { InitializeComponent(); niTray.Icon = TaskHelpers.GetTrayIcon(); this.activateWindow = activateWindow; this.duration = duration; borderRectangle = regionRectangle.Offset(1); borderRectangle0Based = new Rectangle(0, 0, borderRectangle.Width, borderRectangle.Height); Location = borderRectangle.Location; int windowWidth = Math.Max(borderRectangle.Width, pInfo.Width); Size = new Size(windowWidth, borderRectangle.Height + pInfo.Height + 1); pInfo.Location = new Point(0, borderRectangle.Height + 1); Region region = new Region(ClientRectangle); region.Exclude(borderRectangle0Based.Offset(-1)); region.Exclude(new Rectangle(0, borderRectangle.Height, windowWidth, 1)); if (borderRectangle.Width < pInfo.Width) { region.Exclude(new Rectangle(borderRectangle.Width, 0, pInfo.Width - borderRectangle.Width, borderRectangle.Height)); } else if (borderRectangle.Width > pInfo.Width) { region.Exclude(new Rectangle(pInfo.Width, borderRectangle.Height + 1, borderRectangle.Width - pInfo.Width, pInfo.Height)); } Region = region; Timer = new Stopwatch(); UpdateTimer(); RecordResetEvent = new ManualResetEvent(false); ChangeState(ScreenRecordState.Waiting); }
public static void UpdateTrayIcon(int progress = -1) { if (Program.Settings.TrayIconProgressEnabled && Program.MainForm.niTray.Visible && lastIconStatus != progress) { Icon icon; if (progress >= 0) { try { icon = TaskHelpers.GetProgressIcon(progress); } catch (Exception e) { DebugHelper.WriteException(e); progress = -1; if (lastIconStatus == progress) { return; } icon = TaskHelpers.GetTrayIcon(); } } else { icon = TaskHelpers.GetTrayIcon(); } using (Icon oldIcon = Program.MainForm.niTray.Icon) { Program.MainForm.niTray.Icon = icon; oldIcon.DisposeHandle(); } lastIconStatus = progress; } }