Я хочу сделать снимок экрана моего экрана, когда я нажимаю кнопку на окне. Проблема в том, что окно должно исчезнуть, прежде чем делать снимок экрана.Окно не исчезает на скриншоте
Вот мой код:
MainWindow:
private void OnButtonScreenshotClick(object sender, RoutedEventArgs routedEventArgs)
{
this.Visibility = Visibility.Hidden;
ScreenCapture capture = new ScreenCapture();
this.Close();
capture.Show();
}
ScreenCapture (Для того, чтобы показать скриншот)
public ScreenCapture()
{
InitializeComponent();
this.ScreenCaptureImage.Source = Screenshot.TakeFullScreenshot(width, height);
}
Как вы можете видеть, я стараюсь, чтобы скрыть окно, прежде чем я инициализировать новый ScreenCapture-Window. Я также попытался установить задержку с Thread.Sleep, но это не сработает.
Вот мой код, чтобы сделать скриншот:
public static ImageSource TakeFullScreenshot(int width, int height)
{
Image bitmap = new Bitmap(width, height);
{
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.CopyFromScreen(new Point(0, 0), new Point(0, 0), bitmap.Size);
}
}
return GetImageStream(bitmap);
}
private static BitmapSource GetImageStream(Image myImage)
{
var bitmap = new Bitmap(myImage);
IntPtr bmpPt = bitmap.GetHbitmap();
BitmapSource bitmapSource =
System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
bmpPt,
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
//freeze bitmapSource and clear memory to avoid memory leaks
//bitmapSource.Freeze();
//DeleteObject(bmpPt);
return bitmapSource;
}
Есть предложения?
Хорошо, это было легко. Благодаря! Я приму свой ответ, как только смогу. – FKutsche
@FKutsche просто добавьте код перед ScreenCapture() –