将Windows窗体屏幕截图应用程序转换为ASP.NET - javascript

我是一位C#ASP.NET开发人员,他试图创建一个Web应用程序,允许用户指定屏幕区域并对其进行屏幕捕获。我发现了很多javascript和jquery解决方案,但我认为它们太复杂了,我缺乏与它们一起使用的javascript技能。我在MSDN上找到了以下代码:

using System;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Printing;

public class Form1 :
    Form
{
    private Button printButton = new Button();
    private PrintDocument printDocument1 = new PrintDocument();

    public Form1()
    {
        printButton.Text = "Print Form";
        printButton.Click += new EventHandler(printButton_Click);
        printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
        this.Controls.Add(printButton);
    }

    void printButton_Click(object sender, EventArgs e)
    {
        CaptureScreen();
        printDocument1.Print();
    }


    Bitmap memoryImage;

    private void CaptureScreen()
    {
        Graphics myGraphics = this.CreateGraphics();
        Size s = this.Size;
        memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
        Graphics memoryGraphics = Graphics.FromImage(memoryImage);
        memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s);
    }

    private void printDocument1_PrintPage(System.Object sender,
           System.Drawing.Printing.PrintPageEventArgs e)
    {
        e.Graphics.DrawImage(memoryImage, 0, 0);
    }



    public static void Main()
    {
        Application.Run(new Form1());
    }
}

我将代码放在ASP.NET中的代码中,并在项目中添加了对WindowsFormIntegration的引用,但是在运行它时出现错误:

  CS1061:“ ASP.default2_aspx”不包含以下内容的定义:
  “ printButton_Click”,没有扩展方法“ printButton_Click”
  可以找到接受类型为'ASP.default2_aspx'的第一个参数
  (您是否缺少using指令或程序集引用?)

这是.aspx代码:

    <body bgcolor="Silver">
    <form id="form1" runat="server">
    <br />
    <h2 style="color: #808000; font-size: x-large; font-weight: bolder;">
        Article by Vithal Wadje</h2><br />
        <asp:Label style="color: #808000;" ID="Label1" runat="server" Text="Label"></asp:Label>
    <br />
    <div>

        <br />
      <asp:Button 
            ID="printButton" runat="server"
             onclick="printButton_Click"  />
    </div>
    </form>`enter code here`
</body>
</html>

我不熟悉Windows Forms,因此不确定我是否应该放弃使用此MSDN示例https://msdn.microsoft.com/en-us/library/fw1kt6f9.aspx并可能看一下Silverlight,尽管我对此也不熟悉。我正在做的工作可以转换为ASP.NET/C#吗?

提前致谢。

参考方案

由于WPF / Windows窗体应用程序使用完全不同的方式与屏幕进行通信,因此无法将其立即转换为Web应用程序。

WF / WPF可以直接绘制到屏幕上,它知道屏幕并可以访问它。 Web应用程序的Web服务器没有。他们只是输出必要的代码(HTML和Javascript)以使浏览器在屏幕上绘制。服务器(您当前代码所在的服务器)无法读取屏幕。

出于安全原因,也无法从Web应用程序从客户端获取屏幕,因此您无法脱离浏览器中自己站点的沙箱。尽管有一些方法可以使用HTML5和Canvas对页面进行截图。在这里看看:Using HTML5/Canvas/JavaScript to take screenshots。

.NET C#Webbrowser填充输入,不带ID或类名 - javascript

我需要在网络浏览器中填写一个输入,但这不起作用。我认为必须使用name属性来完成,但是怎么做呢?foreach (HtmlElement login in webBrowser1.Document.GetElementsByTagName("input")) { if (login.GetAttribute("name"…

获取JavaScript值到C#字符串 - javascript

                        是否可以在C#中执行类似的操作?该值为“ 10/05/2014”string jsValue = javascript("$('#EstimatedStartDate').val()"); 参考方案 您能否更详细地阐明您要做什么。看来您正在尝试从javascript(客户…

ASP.NET-如何更改JSON序列化的方式? - javascript

我正在使用ASP.NET通过以下查询返回Json文件:public ActionResult getTransactionTotals(int itemID) { DBEntities db = new DBEntities(); var query = from trans in db.Transactions // Linq query removed …

在JavaScript中运行方法C# - javascript

打扰一下,我有这种C#asp方法。受保护的无效btnSave_Click(对象发送者,EventArgs e)有谁知道我该如何发送脚本给您?可以办到?。 javascript大神给出的解决方案 是的,那可以做到。为此,您在.aspx.cs页中创建了函数,然后单击保存按钮上的代码将其复制到函数中,然后执行以下步骤。//Call cs method from J…

调试捆绑和版本化的javascript文件 - javascript

我已经使用Bundleconfig.cs将我的JavaScript文件打包如下:bundles.Add(new ScriptBundle("~/bundles/resultscripts").Include( "~/Scripts/spectrum.js", "~/Scripts/notify.js"…