JavaScriptで作成された複数のキャンバス要素があります。私の質問です: "私はどのように複数のキャンバス要素を1つのキャンバス要素に配置できますか?"複数のキャンバス要素を1つのキャンバス要素に配置するにはどうすればよいですか?
答えて
あなたが行きます。
- それはそれぞれのキャンバスを取得し、それらPNGの
- アクセスバッファキャンバス作り、その中に互いの上にPNG年代を書きます
- PNGにバッファキャンバスをバックライトと送信ここにチェック(IMGタグ
にそれだけで#buffer
canvas要素display: none;
を与え、すべてが見えなく起こります。http://jsfiddle.net/Allendar/UqxCY/2/)。
HTML
<body onload="generatePNG()">
<canvas id="c1"></canvas>
<canvas id="c2"></canvas>
<canvas id="c3"></canvas>
<canvas id="buffer"></canvas>
<div id="output">Empty</div>
</body>
CSS
canvas[id^=c], div[id=output] {
border: 1px solid red;
}
canvas[id=buffer] {
border: 1px dotted green;
}
#output {
padding: 15px;
}
#output img {
border: 1px dotted blue;
}
はJavaScript
function generatePNG() {
var b_canvas1 = document.getElementById("c1");
var b_context1 = b_canvas1.getContext("2d");
b_context1.fillRect(10, 50, 50, 50);
var b_canvas2 = document.getElementById("c2");
var b_context2 = b_canvas2.getContext("2d");
b_context2.fillRect(80, 50, 50, 50);
var b_canvas3 = document.getElementById("c3");
var b_context3 = b_canvas3.getContext("2d");
b_context3.fillRect(150, 50, 50, 50);
var img1 = new Image();
img1.src = b_canvas1.toDataURL("image/png");
var img2 = new Image();
img2.src = b_canvas2.toDataURL("image/png");
var img3 = new Image();
img3.src = b_canvas3.toDataURL("image/png");
var buffer = document.getElementById("buffer");
var buffer_context = buffer.getContext("2d");
buffer_context.drawImage(img1, 0, 0);
buffer_context.drawImage(img2, 0, 0);
buffer_context.drawImage(img3, 0, 0);
var buffer_img = new Image();
buffer_img.src = buffer.toDataURL("image/png");
var output = document.getElementById('output');
output.innerHTML = '<img src="' + buffer_img.src + '" alt="Canvas Image" />';
}
これは動作しますが、jqueryを使用しています。 jqueryを使用せずにそれを実行する可能性はありますか? – Julian
確か;質問が更新され、ネイティブJavaScriptで完全に機能するようになりました。 –
中間イメージを作成する必要はありません。 drawImageメソッドは、描画するイメージとして別のキャンバスを直接使用できます。 –
おそらく、このような何か、ターゲット・キャンバス(未テスト)にその画像をペイント、画像へのソースキャンバスをエクスポートします。ここでは
function drawCanvasOnOtherCanvas(src, target) {
var img = new Image();
img.onload = function() {
target.drawImage(img, 0, 0);
};
img.src = src.toDataURL('image/png');
}
キャンバスのdrawImageメソッドは、実際にすることができます画像の代わりに別のキャンバスを撮る - キャンバスを最初に画像に変換する必要はありません。 (。WhatWG's documentationを参照)
私は証明するためにAllendarのJSFiddleを簡素化しました:
基本的に、すべてを行う必要がある:
targetCanvas.drawImage(sourceCanvas, 0, 0);
、あなたはに良いことがあります行く。
- 1. キャンバス要素の変更後にキャンバス要素を印刷するにはどうすればいいですか?
- 2. キャンバスのような要素
- 3. 1つの行に2つのdiv要素を配置するにはどうすればよいですか?
- 4. キャンバス要素の位置を変更するにはどうすればよいですか?
- 5. 複数のキャンバス要素がパフォーマンスにどのように影響しますか?
- 6. 配列内の1つの要素を複数の要素に置き換えるにはどうすればよいですか?
- 7. 2つの応答4by3要素を1行に配置するにはどうすればよいですか?
- 8. 2つのイメージ要素をキャンバス内に配置する方法は?
- 9. 1つの要素に複数のXAMLスタイルを適用するにはどうすればよいですか?
- 10. ワンクリックで複数のキャンバス要素から複数のイメージをダウンロード
- 11. キャンバス上のwpf要素をタグ名で削除するにはどうすればよいですか?
- 12. キャンバス要素のSVGのビューボックス属性を読み取るにはどうすればよいですか?
- 13. キャンバス上の要素の向きを逆にするにはどうすればいいですか?
- 14. キャンバス要素が無効になっているようです
- 15. Rubyでは、配列内の要素を潜在的に複数の要素に置き換えるにはどうすればよいですか?
- 16. IEでHTML5キャンバス要素を使用するにはどうすればよいですか?
- 17. Dartでキャンバス要素を作成するにはどうすればよいですか?
- 18. JavaFX VBox複数の要素を1つの行に配置
- 19. フレックスボックスで2つの要素を同じ行に配置するにはどうすればよいですか?
- 20. p5.js要素キャンバスの位置
- 21. キャンバス要素にテキストを描画する
- 22. キャンバスに要素を追加するJavaFX
- 23. DOMにキャンバス要素を追加する
- 24. javascript/jqueryを使用して3つのキャンバスHTML要素を1つの画像ファイルに結合するにはどうすればよいですか?
- 25. string1の複数の要素をstring2の1つの要素にマージするにはどうすればよいですか? C/C++
- 26. 2つのコンテンツサイズのHTML要素を並べて配置するにはどうすればよいですか?
- 27. Marklogicで重複要素の要素クエリを実行するにはどうすればよいですか?
- 28. 配列辞書から1つの要素を削除するにはどうすればよいですか?
- 29. WPFキャンバスに表示される要素
- 30. キャンバス要素の中央にdiv(ボーダーとパディング付き)を配置しますか?
あなたはjsfiddleを設定できます –