Моя цель - сделать растровое изображение окна и только этого окна. Мне также нужно будет иметь возможность создавать растровые изображения определенных областей пикселей в этом окне. Эти регионы не являются оконными формами или чем-то подобным.
Я подумал, что создание экрана из дескриптора окна, а затем запись областей экрана, которые мне нужны, в растровое изображение, было бы хорошим решением этой проблемы.
Вот что я сделал:
Process[] processlist = Process.GetProcesses();
String[] process = null;
process = new string[200];
int i = 0;
IntPtr handle = IntPtr.Zero;
foreach (Process theprocess in processlist)
{
process[i] = theprocess.MainWindowTitle;
if (process[i].Contains("Title of Process"))
{
handle = theprocess.MainWindowHandle;
MessageBox.Show("Handle Set");
break;
}
i++;
}
//Sets new screen from Handle
Screen thescreen = Screen.FromHandle(handle);
//Bitmap stored
Bitmap bmpScreenshot = new Bitmap(thescreen.Bounds.Width, thescreen.Bounds.Height);
//Graphics object to draw screen in bitmap
Graphics g = Graphics.FromImage(bmpScreenshot);
//Copy from screen to bitmap
g.CopyFromScreen(0, 0, 0, 0, thescreen.Bounds.Size);
Однако это просто получает растровое изображение всего экрана. Как я могу уменьшить это до размера всего одного окна?
Спасибо.