如何从Web应用程序捕获.NET中的屏幕截图?

Sri*_*ddi 8 .net asp.net

在Java中,我们可以这样做:

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;

...

public void captureScreen(String fileName) throws Exception {

   Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
   Rectangle screenRectangle = new Rectangle(screenSize);
   Robot robot = new Robot();
   BufferedImage image = robot.createScreenCapture(screenRectangle);
   ImageIO.write(image, "png", new File(fileName));

}

...
Run Code Online (Sandbox Code Playgroud)

我们如何通过Web应用程序在.NET中执行此操作?捕获客户端的屏幕并将其从应用程序内部发送到服务器.

Ice*_*ind 6

.NET图形对象有一个名为CopyFromScreen()的方法,它将捕获屏幕的矩形区域并将其复制到位图中.最好的方法类似于以下内容:

public void CaptureImage(Point SourcePoint, Point DestinationPoint, Rectangle Selection, string FilePath)
{
    using (Bitmap bitmap = new Bitmap(Selection.Width, Selection.Height)) {
        using (Graphics g = Graphics.FromImage(bitmap)) {
            g.CopyFromScreen(SourcePoint,DestinationPoint, Selection.Size);
        }
        bitmap.Save(FilePath, ImageFormat.Bmp);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 使用Silverlight 3.0及更高版本,有一个对象caleld WriteableBitmap可以让你只捕获浏览器的客户区.您无法捕获整个屏幕..只需要Silverlight插件占用的屏幕区域.你可以从这里得到一个例子:http://stackoverflow.com/questions/2475140/how-to-capture-part-of-the-screen-in-silverlight (2认同)
  • 首先,我认为它是因为它不符合你的想法.我非常肯定,Java Robot对象只捕获客户区...而不是用户的整个桌面屏幕.其次,您无法将Java与ASP.NET进行比较.他们是两种不同的野兽.Java是一个从网页加载并在客户端计算机上运行的applet.ASP.NET不在客户端的计算机上运行.它严格地从Web服务器运行.Java applet与Adobe Flash或Microsoft Silverlight相当. (2认同)