2011-03-02 81 views
1

是否有一種簡單的方法(最好不需要導入庫)在c#中截取ASP.NET網頁(更好的是aspx控件)並將其保存爲圖像?提前謝謝了!示例代碼或指南的鏈接將不勝感激...ASPX頁面的屏幕截圖

+4

+1:只是因爲我恨它,當人們downvote沒有留下意見。 – Dathan 2011-03-02 19:42:57

+2

你是指客戶端還是服務器端? – BrokenGlass 2011-03-02 19:44:34

+1

@達納 - 特別是因爲這個問題似乎不太糟糕。 +1我也是 – 2011-03-02 19:48:27

回答

0

不是100%確定如果這正是你正在尋找,但本教程應該至少讓你的地面工作能力捕捉屏幕截圖並保存它。這看起來更像是屏蔽了整個屏幕,而不僅僅是aspx頁面,但至少它應該是一個開始。

http://www.geekpedia.com/tutorial181_Capturing-screenshots-using-Csharp.html

http://weblogs.asp.net/jalpeshpvadgama/archive/2008/01/28/how-to-take-screenshot-in-c.aspx

的是,最大的一塊似乎是

using System.Drawing.Imaging; 

應該可以從那裏刨根問底,我相信

2

人真正kludgie的解決方案:編寫一個WinForms應用程序幷包含一個瀏覽器控件。導航到您要捕捉的網頁應用程序頁面,然後使用here中描述的編程式屏幕捕捉方法。

1

這是幾年前寫的一個簡單的截圖製作工具。我不確定你想要達到什麼目的,但是這個需要截屏整個屏幕。希望這可以幫助。

using System; 
using System.Drawing; 
using System.Drawing.Imaging; 
using System.IO; 
using System.Windows.Forms; 

public class ScreenshotManager 
{ 
    private Image screenshot; 

    public Image Screenshot 
    { 
     get 
     { 
      if (screenshot == null) 
       MakeScreenshot(); 

       return screenshot; 
      } 
     } 

    public MemoryStream ScreenshotToMemoryStream() 
    { 
     MemoryStream ms = new MemoryStream(); 
     Screenshot.Save(ms, ImageFormat.Jpeg); 
     ms.Position = 0; 
     return ms; 
    } 

    public byte[] ScreenshotToByteArray() 
    { 
     return ScreenshotToMemoryStream().ToArray(); 
    } 

    public void MakeScreenshot() 
    { 
     screenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, 
      Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb); 

     var graphics = Graphics.FromImage(screenshot); 
     graphics.CopyFromScreen(0, 0, Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy); 
    } 
} 
+0

嘿。感謝代碼。我試圖使用它,但是我得到了一些錯誤 - 圖形,位圖,屏幕和保存無法識別。我需要導入一些東西嗎?謝謝! – MiziaQ 2011-03-02 20:09:36

+0

當然,我已將使用條款添加到原始帖子。 – 2011-03-02 20:22:28

+0

還請添加如何使用此代碼爲asp.net。像這樣的,例如,請:ScreenshotManager sm = new ScreenshotManager(); System.Drawing.Image im = sm.Screenshot; System.IO.MemoryStream ms = new System.IO.MemoryStream(); im.Save(ms,System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); Response.ContentType =「image/Gif」; Response.BinaryWrite(ms.ToArray()); – apros 2011-03-02 20:36:23

0

您可以以編程方式創建一個Web瀏覽器的控制和利用其客戶區的截圖-contrary大家普遍認爲的Web瀏覽器不必可見這個 - 只要確保線程使用WebBrowser控制在公寓狀態運行ApartmentState.STA。這種方法在服務器端和客戶端都可以使用。

在較高水平,你需要做的創建位圖什麼:

  1. 實例化WebBrowser控件 和

  2. 瀏覽設置所需的寬度/高度到您選擇

    的URI
  3. 等待DocumentCompleted 事件

  4. 使用WebBrowser DrawToBitmap() 方法提取圖像