dlxjj/imradv3
0263
1using NHotkey;2using NHotkey.Wpf;3using ScreenGrab.Extensions;4using System.ComponentModel;5using System.Drawing;6using System.Windows;7using System.Windows.Input;8using Wpf.Ui.Tray.Controls;9 10namespace ScreenGrab.Sample;11 12public partial class MainWindow13{14 public MainWindow()15 {16 InitializeComponent();17 }18 19 private void Capture()20 {21 Clean();22 23 //ScreenGrabber.OnCaptured = bitmap =>24 //{25 // Img.Source = bitmap.ToImageSource();26 // if (WindowState != WindowState.Normal)27 // WindowState = WindowState.Normal;28 // if (!IsVisible)29 // Show();30 // Activate();31 //};32 //ScreenGrabber.Capture(AuxiliaryCb.IsChecked ?? false);33 34 if (ScreenGrabber.IsCapturing) return;35 // https://github.com/wuqinchao/ScreenCapturer36 // 替代品 37 ScreenGrabber.OnCaptured = async (bitmap, type) => await ScreenshotCallbackAsync(bitmap, type, null);38 ScreenGrabber.Capture(true);39 }40 41 internal async Task ScreenshotCallbackAsync(Bitmap? bitmap, string type, CancellationToken? token = null)42 {43 if (bitmap == null)44 {45 //ShowBalloonTip("图像不存在");46 return;47 }48 }49 50 private void Capture(object? sender, HotkeyEventArgs e)51 {52 Capture();53 }54 55 private void Capture_Click(object sender, RoutedEventArgs e)56 {57 Capture();58 }59 60 private void Clean_Click(object sender, RoutedEventArgs e)61 {62 Clean();63 }64 65 private void Clean()66 {67 Img.Source?.Freeze();68 Img.Source = null;69 GC.Collect();70 }71 72 private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)73 {74 HotkeyManager.Current.AddOrReplace("Capture", Key.A, ModifierKeys.Windows | ModifierKeys.Shift, Capture);75 }76 77 private void MainWindow_OnUnloaded(object sender, RoutedEventArgs e)78 {79 HotkeyManager.Current.Remove("Capture");80 }81 82 protected override void OnClosing(CancelEventArgs e)83 {84 e.Cancel = true;85 Hide();86 }87 88 private void NotifyIcon_OnLeftClick(NotifyIcon sender, RoutedEventArgs e)89 {90 Show();91 Activate();92 }93 94 private void MenuItem_OnClick(object sender, RoutedEventArgs e)95 {96 Application.Current.Shutdown();97 }98}