public UploadNotificationForm(int duration, int fadeDuration, ContentAlignment placement, Size size, UploadNotificationFormConfig config) { InitializeComponent(); SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true); Duration = duration; FadeDuration = fadeDuration; opacityDecrement = (float)fadeInterval / FadeDuration; ToastConfig = config; textFont = new Font("Arial", 10); if (config.Image != null) { config.Image = ImageHelpers.ResizeImageLimit(config.Image, size); config.Image = ImageHelpers.DrawCheckers(config.Image); size = new Size(config.Image.Width + 2, config.Image.Height + 2); } else if (!string.IsNullOrEmpty(config.Text)) { textRenderSize = Helpers.MeasureText(config.Text, textFont, size.Width - textPadding * 2); size = new Size(textRenderSize.Width + textPadding * 2, textRenderSize.Height + textPadding * 2 + 2); } Point position = Helpers.GetPosition(placement, new Point(windowOffset, windowOffset), Screen.PrimaryScreen.WorkingArea.Size, size); NativeMethods.SetWindowPos(Handle, (IntPtr)SpecialWindowHandles.HWND_TOPMOST, position.X + Screen.PrimaryScreen.WorkingArea.X, position.Y + Screen.PrimaryScreen.WorkingArea.Y, size.Width, size.Height, SetWindowPosFlags.SWP_NOACTIVATE); if (Duration <= 0) { DurationEnd(); } else { tDuration.Interval = Duration; tDuration.Start(); } }
public static void Show(int duration, int fadeDuration, ContentAlignment placement, Size size, UploadNotificationFormConfig config) { if ((duration > 0 || fadeDuration > 0) && size.Width > 0 && size.Height > 0) { config.Image = ImageHelpers.LoadImage(config.FilePath); if (config.Image != null || !string.IsNullOrEmpty(config.Text)) { UploadNotificationForm form = new UploadNotificationForm(duration, fadeDuration, placement, size, config); NativeMethods.ShowWindow(form.Handle, (int)WindowShowStyle.ShowNoActivate); } } }