我的目標是能夠製作一個窗口的位圖,並且只是該窗口。我還需要能夠在該窗口內製作特定像素區域的位圖。這些地區不是窗體或類似的東西。如何在C#中創建一個窗口的位圖?
我想通過窗口句柄製作一個屏幕,然後將需要寫入位圖的屏幕區域寫入這個問題是一個很好的解決方案。
這是我做過什麼:
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);
然而,這只是獲取整個屏幕的位圖。我怎樣才能減少到只有一個窗口的大小?
謝謝。
你必須[PInvoke的GetWindowRect()](http://pinvoke.net/default.aspx/ user32/GetWindowRect.html)來獲取窗口的位置和大小。 –