2014-09-22 77 views
1

我的目標是捕獲整個桌面的屏幕截圖。保存多個屏幕截圖

我已將計時器設置爲僅用於測試目的的5秒間隔。

我使用這個代碼截圖:

int screenLeft = SystemInformation.VirtualScreen.Left; 
int screenTop = SystemInformation.VirtualScreen.Top; 
int screenWidth = SystemInformation.VirtualScreen.Width; 
int screenHeight = SystemInformation.VirtualScreen.Height; 
using (Bitmap bmp = new Bitmap(screenWidth, screenHeight)) 
{ 
    using (Graphics g = Graphics.FromImage(bmp)) 
    { 
     g.CopyFromScreen(screenLeft, screenTop, 0, 0, bmp.Size); 
    } 

    bmp.Save(screenPath); 
} 

至於屏幕路徑

string screenPath = @"c://EventScout/Screen " + DateTime.Now.ToString("yyyyMMddHHmmss") + ".png"; 

一切從事實,我最終只能與一個屏幕截圖的工作就好了一邊。

我在做什麼錯?任何想法或主角?

+0

首先你不需要'bmp.Dispose()',因爲這會被'using'語句自動處理。最有可能不是你的問題只是一個說明... – DotN3TDev 2014-09-22 20:27:48

+0

你究竟在哪裏設置屏幕路徑?你有沒有調試過,看它是否至少像你期望的那樣變化? – ne1410s 2014-09-22 20:29:51

+0

如果你只有一個截圖,可能你的計時器不工作。代碼的設置在哪裏? – Blorgbeard 2014-09-22 20:31:18

回答

2

您需要在每次迭代時更改要保存的文件名。

+0

他確實......每5秒發生一次(從問題開始),然後用DateTime.Now附加文件名。編輯:或者至少是避開它,他指出字符串screenPath =「」。對於OP,將該screenPath分配放入循環中。 – alykins 2014-09-22 20:28:52

+0

謝謝你的答案,screenpath不在循環中,那就是問題所在 – Dzony 2014-09-22 20:38:25