2021-12-14 06:40:07 +01:00
|
|
|
|
using System;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Drawing.Imaging;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
|
2022-01-27 14:40:04 +01:00
|
|
|
|
namespace MSFSPopoutPanelManager.Provider
|
2021-12-14 06:40:07 +01:00
|
|
|
|
{
|
|
|
|
|
public class ImageOperation
|
|
|
|
|
{
|
|
|
|
|
public static Bitmap TakeScreenShot(IntPtr windowHandle)
|
|
|
|
|
{
|
|
|
|
|
// Set window to foreground so nothing can hide the window
|
|
|
|
|
PInvoke.SetForegroundWindow(windowHandle);
|
|
|
|
|
Thread.Sleep(300);
|
|
|
|
|
|
|
|
|
|
Rectangle rectangle;
|
|
|
|
|
PInvoke.GetWindowRect(windowHandle, out rectangle);
|
|
|
|
|
|
|
|
|
|
var left = rectangle.Left;
|
|
|
|
|
var top = rectangle.Top;
|
|
|
|
|
var width = rectangle.Right - rectangle.Left;
|
|
|
|
|
var height = rectangle.Bottom - rectangle.Top;
|
|
|
|
|
|
|
|
|
|
var bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb);
|
|
|
|
|
|
|
|
|
|
using (Graphics g = Graphics.FromImage(bmp))
|
|
|
|
|
{
|
|
|
|
|
g.CopyFromScreen(new Point(left, top), Point.Empty, rectangle.Size);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return bmp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|