截取ASPX页面的截图

时间:2011-03-02 19:38:39

标签: c# .net asp.net

是否有一种简单的方法(最好不必导入库)在c#中截取ASP.NET网页(更好的是aspx控件)并将其保存为图像?提前谢谢了!我们非常感谢示例代码或教程链接......

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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);
    }
}

答案 2 :(得分: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;

应该能够从那里挖出一些东西,我相信

答案 3 :(得分:0)

您可以通过编程方式创建Web浏览器控件并截取其客户区域的屏幕截图 - 相反,Web浏览器不必为此显示 - 只需确保您使用WebBrowser控件的线程在公寓州ApartmentState.STA运行。这种方法在服务器端和客户端都可以使用。

在高级别上,您需要做的是创建位图:

  1. 实例化WebBrowser控件 并设置所需的宽度/高度

  2. 浏览到您选择的URI

  3. 等待DocumentCompleted 事件

  4. 使用Web浏览器DrawToBitmap() 提取图像的方法