0

已经有很多类似的问题,但由于某种原因,它们并没有解决我的问题。

我的项目是保存一个动态创建的页面(或页面的一部分)。用户可以选择在屏幕上拖动对象并以任何顺序保留它们,然后将该顺序作为图像保存到光盘中。

我自己的研究表明,我可以使用来自 JQuery 的 Draggable并且这很容易实现。这是我被卡住的储蓄部分。

我跟着几个链接,但图像似乎没有保存到光盘,我认为它在 IE 中不起作用!但是,我对 FireFox 很满意,因此使用 toDataUrl() 听起来是最好的方法。

由于我无法让它工作,我决定稍微改变策略并将值传递给后面的代码(C#)

我的代码的保存部分看起来像

<script>
    function SaveMe() {
        var canvas = document.getElementById("mycanvas");
        var image = canvas.toDataUrl();
        document.getElementById("hideMe").value = image;
    }
</script>

当我在 FireBug 中调试时,我从来没有达到document.getElementById("hideMe").value = image;. 我逐步完成但永远无法过去var image = canvas.toDataUrl();这是我假设的预期行为,但没有错误消息?

我的 HTML 正文是

<body>
    <script type="text/javascript">
        $(document).ready(function () {
            $('.popup_click').show(0).draggable();    
        });    
    </script>

    <form id="form1" runat="server">

        <div class="popup_click">
            <div id="popup_title">Title</div>
        </div>

        <canvas id="mycanvas" class="canvas"></canvas>

        <asp:HiddenField ID="hideMe" runat="server" />
        <asp:Button runat="server" OnClick="ClickMe" text="Click" OnClientClick="SaveMe()"/>

    </form>
</body>

我究竟做错了什么?我在调试模式下本地工作,Visual Studio 2013。

4

2 回答 2

1

这是我想将画布导出到图像时总是使用的功能,它将图像放入弹出窗口中,以便用户可以使用它做他们想做的事情(我希望这会有所帮助):

function imageCanvas(evt){
    var imageCanvas = document.createElement('canvas');
    imageCanvas.width = document.documentElement.clientWidth;
    imageCanvas.height = document.documentElement.clientHeight;
    var imageCanvasContext = imageCanvas.getContext("2d");
    imageCanvasContext.fillStyle = document.getElementById("body").style.backgroundColor;
    imageCanvasContext.fillRect(0,0,imageCanvas.width,imageCanvas.height);
    imageCanvasContext.drawImage(mainCanvas,0,0,imageCanvas.width,imageCanvas.height,0,0,imageCanvas.width,imageCanvas.height);
    var dataURL = imageCanvas.toDataURL("image/png");
    var imagePopup = window.open("","fractalLineImage","left=0,top=0,width="+(imageCanvas.width/2)+",height="+(imageCanvas.height/2)+",toolbar=0,resizable=0");
    imagePopup.document.write("<title>Export Image</title>");
    imagePopup.document.write("<img id='exportImage'"
    +" alt=''"
    +" height='"+ imageCanvas.height+"'"
    +" width='"+ imageCanvas.width+"'"
    +" style='position:absolute;left:0;top:0'/>");
    imagePopup.document.close();
    var exportImage = imagePopup.document.getElementById("exportImage");
    exportImage.src = dataURL;
}
于 2013-10-17T14:18:43.997 回答
1

不确定,但我过去也遇到过 todataurl() 的问题,这个链接帮助了我

在动力学 js 中使用图像时无法获取数据 url

于 2013-10-17T14:12:14.783 回答