[英]HTML5 canvas got refresh after postback in asp.net
我在asp.net應用程序中使用HTML5 canvas標簽和Jquery插件免費手寫。
http://www.websanova.com/plugins/paint/html5#websanova
我面臨一個問題。 當單擊“我的服務器端”按鈕以保存圖像時,它將進行回發,並猜測並刷新頁面的畫布。 回發后,它給了我一個空的畫布,並且我得到了通過代碼保存的空白圖像。
這是我的代碼片段
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="wPaint.aspx.cs" Inherits="wPaint" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>.::wPaint in .NET::.</title>
<!-- jQuery -->
<script type="text/javascript" src="wPaint/jquery.1.7.1.min.js"></script>
<script type="text/javascript" src="wPaint/jquery.ui.core.min.js"></script>
<script type="text/javascript" src="wPaint/jquery.ui.widget.min.js"></script>
<script type="text/javascript" src="wPaint/jquery.ui.mouse.min.js"></script>
<script type="text/javascript" src="wPaint/jquery.ui.draggable.min.js"></script>
<!-- wColorPicker -->
<link rel="Stylesheet" type="text/css" href="wPaint/wColorPicker.1.2.min.css" />
<script type="text/javascript" src="wPaint/wColorPicker.1.2.min.js"></script>
<!-- wPaint -->
<link rel="Stylesheet" type="text/css" href="Styles/wPaint.css" />
<script type="text/javascript" src="wPaint/wPaint.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div id="wPaint" style="position: relative; width: 500px; height: 300px; background: #CACACA;
border: solid black 1px; overflow: hidden;">
</div>
<script type="text/javascript">
$("#wPaint").wPaint();
function loadImage() {
var imagedata = $("#lblImage").text();
var extension = $("#lblextension").text();
$("#wPaint").wPaint("image", "data:image/" + extension + ";base64," + imagedata + "");
}
function saveImage() {
var imageData = $("#wPaint").wPaint("image");
$("#lblImage").text(imageData);
}
function Clear() { $("#wPaint").wPaint(); }
</script>
<div>
<div style="float: left; width: 100px; margin: 10px;">
<asp:Button ID="btnSave" runat="server" Text="Save Image" OnClick="btnSave_Click" /></div>
<div style="float: left; width: 100px; margin: 10px;">
<asp:Button ID="btnClear" runat="server" Text="Clear" OnClick="btnClear_Click" /></div>
</div>
<asp:Label ID="lblImage" runat="server" Style="display: block" />
<asp:Label ID="lblextension" runat="server" Style="display: none" />
</form>
</body>
</html>
:::::::::::: CS ::::::::::::::::
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
public partial class wPaint : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSave_Click(object sender, EventArgs e)
{
this.ClientScript.RegisterStartupScript(GetType(), "Javascript", "saveImage();", true);
}
protected void btnClear_Click(object sender, EventArgs e)
{
this.ClientScript.RegisterStartupScript(GetType(), "Javascript", "Clear();", true);
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(lblImage.Text);
MemoryStream ms = new MemoryStream(imageBytes, 0,
imageBytes.Length);
// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
Image image = Image.FromStream(ms, true);
image.Save(Server.MapPath(".\\Saved\\Arslan.png"));
// return image;
}
}
請建議我任何解決此問題的方法。 因此,我的畫布不會空白。 它可以在客戶端html按鈕上正常工作,並完美保存圖像
解決此問題的最簡單方法是回發ajax,並停留在頁面上。
第二個困難的解決方案是用您以前發布的圖像重新繪制畫布。
自然地,往返(回發)將刪除圖形。 為了發送和保存dataUri
您必須編寫WebMethod
或WCF service
並請求它jQuery.ajax()
。
您可以嘗試將此保存按鈕放入UpdatePanel
嗨,您可以將運行服務器的表單放在iframe中,然后在其中進行上傳。 成功上傳后,使用$('#Id',window.parent.document)從iframe訪問父html並設置圖片。 回發將發生在iframe中,並且您的畫布不會受到影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.