ASPX页面的屏幕截图

问题描述:

是否有一种简单的方法(最好不需要导入库)在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

不是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; 

应该可以从那里刨根问底,我相信

人真正kludgie的解决方案:编写一个WinForms应用程序并包含一个浏览器控件。导航到您要捕捉的网页应用程序页面,然后使用here中描述的编程式屏幕捕捉方法。

这是几年前写的一个简单的截图制作工具。我不确定你想要达到什么目的,但是这个需要截屏整个屏幕。希望这可以帮助。

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

您可以以编程方式创建一个Web浏览器的控制和利用其客户区的截图-contrary大家普遍认为的Web浏览器不必可见这个 - 只要确保线程使用WebBrowser控制在公寓状态运行ApartmentState.STA。这种方法在服务器端和客户端都可以使用。

在较高水平,你需要做的创建位图什么:

  1. 实例化WebBrowser控件 和

  2. 浏览设置所需的宽度/高度到您选择

    的URI
  3. 等待DocumentCompleted 事件

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