我目前正在使用PrintWindow截取外部應用程序,我想將它保存到我的桌面。Bitmap.Save整個法師是黑色的,不只是背景
這是我的代碼:
// Get proc
Process proc = Process.GetProcessesByName("procName").Single();
IntPtr hWnd = proc.MainWindowHandle;
// Restore proc if minimised
int style = GetWindowLong(hWnd, GWL_STYLE);
if ((style & WS_MINIMIZE) == WS_MINIMIZE)
ShowWindow(hWnd, WindowShowStyle.Restore);
// Get RECT
RECT rect;
GetWindowRect(new HandleRef(this, hWnd), out rect);
// Get screenshot
int width = rect.Right - rect.Left;
int height = rect.Bottom - rect.Top;
Bitmap bmp = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(bmp))
{
IntPtr dc = g.GetHdc();
if (!PrintWindow(hWnd, dc, 0))
{
int error = Marshal.GetLastWin32Error();
var exception = new System.ComponentModel.Win32Exception(error);
Debug.WriteLine("ERROR: " + error + ": " + exception.Message);
return;
}
//Thread.Sleep(200);
bmp.Save(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\test.jpeg", ImageFormat.Jpeg);
panel1.BackgroundImage = bmp;
g.ReleaseHdc(dc);
}
的PANEL1顯示我的良好形象,在應用程序的實際截圖。當我進入我的桌面時,我發現了一個test.jpeg,但它全是黑色的。爲什麼?
謝謝!
對他來說,只有背景是黑色的。對我來說,整個圖像是黑色的 – Haytam
「_ .. ** JPEG **圖像默認爲黑色背景,所以如果您的文字顏色也是黑色,您將會看到一個黑色的圖像,如果圖像沒有背景色,必須保存爲** PNG ** .._「從[**保存的位圖是黑色**](http://stackoverflow.com/questions/28019010/saved-bitmap-is-black) –
我的圖像是一個應用程序的屏幕截圖包含黑色文本,但不僅僅是黑色文本。 – Haytam