0

HTML キャンバスをファイルに保存しようとしていますが、これは正常に実行できますが、キャンバスにドラッグしたオブジェクトは保存されません。

したがって、Draggable JQuery を使用することで、オブジェクトを画面上で自由に移動し、キャンバスの上に配置することができます。を使用してキャンバスを保存するCanvas.ToDataURL()と、ドラッグしたオブジェクトが保存されません (また、jsFiddle でキャンバスに奇妙なことを行います。キャンバスの色が変わったように見えますか?)。

「動作する」例を見るには、私の jsFiddle http://jsfiddle.net/JVSFS/74/にアクセスしてください。

緑色のボックスを青色のボックスの上にドラッグし、保存ボタンをクリックしてください。結果は下に表示されます (オレンジ色のボックスのみ)。

HTML

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

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

    <asp:HiddenField ID="hideMe" runat="server" />

    <asp:Button runat="server" OnClick="ClickMe" Text="Click" OnClientClick="SaveMe()" />

<button onclick="SaveMe()">Try it</button>

<p>Results: </p>
<img id="myImage" />

JavaScript

    $(document).ready(function () {
        $('.popup_click').show(0).draggable();
    });

    function SaveMe() {
        var canvas = document.getElementById("MyCanvas");
        var context = canvas.getContext("2d");
        context.fillStyle = "orange";
        context.fillRect(0, 0, 100, 100);

        var image = canvas.toDataURL("image/png");

        document.getElementById("myImage").src = image;


        document.getElementById("hideMe").value = image;
    }

CSS

.popup_click {
            background: #80FF80;
            width: 50px;        }

        .canvas {
            width: 100px;
            height: 100px;
            background-color: #0FC;
}

ドラッグしたオブジェクトを保存するにはどうすればよいですか? オブジェクトがそのコンテキストの一部であることをキャンバスに伝える必要があると思いますが、その方法がわからず、自分の検索では何も見つかりませんでした。

4

2 に答える 2

1

https://developer.mozilla.org/en-US/docs/HTML/Canvas/Drawing_DOM_objects_into_a_canvasから

HTML をキャンバスに描画することはできません。代わりに、レンダリングするコンテンツを含む SVG イメージを使用する必要があります。HTML コンテンツを描画するには、HTML を含む要素を使用してから、その SVG 画像をキャンバスに描画します。

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var data = "<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'>" +
             "<foreignObject width='100%' height='100%'>" +
               "<div xmlns='http://www.w3.org/1999/xhtml' style='font-size:40px'>" +
                 "<em>I</em> like <span style='color:white; text-shadow:0 0 2px blue;'>cheese</span>" +
               "</div>" +
             "</foreignObject>" +
           "</svg>";
var DOMURL = self.URL || self.webkitURL || self;
var img = new Image();
var svg = new Blob([data], {type: "image/svg+xml;charset=utf-8"});
var url = DOMURL.createObjectURL(svg);
img.onload = function() {
    ctx.drawImage(img, 0, 0);
    DOMURL.revokeObjectURL(url);
};
img.src = url;
于 2013-10-18T08:07:19.370 に答える