0
首先see this Fiddle的DrawImage動態創建的畫布上
我想動態創建一個畫布,它附加到一個特定的DIV並繪製聯SVG到畫布上。但不能按預期工作。
var randn = '1';
function createme(){
alert("completed 0");
var crCavs = $('<canvas />',{ id : 'mycanvs'+randn })
$('#album').append(crCavs);
alert("completed 1");
var svg2 =document.getElementById('sVgsource'+randn).outerHTML,
vms =document.getElementById('mycanvs'+randn), // target canvas
ctx2 =vms.getContext('2d');
//callback
svgToImage(svg2, function(img2){
vms.width =$('#sVgsource'+randn).width();
vms.height =$('#sVgsource'+randn).height();
alert("completed 3");
ctx2.drawImage(img2, 30, 40);
alert("completed 4");
}
function svgToImage(svg2, callback) {
var nurl = "data:image/svg+xml;utf8," + encodeURIComponent(svg2),
img2 = new Image;
//invoke callback
callback(img2);
img2.src = nurl;
alert("completed 2");
}
}
createme();
謝謝。見https://jsfiddle.net/z769z7af/5/爲什麼畫布在alert(「completed 1」)後消失? – Becky 2015-04-01 23:33:40
我調整了畫布的高度和寬度,使畫布停止消失。見https://jsfiddle.net/z769z7af/6/但我不知道爲什麼'drawImage();'不工作?沒有任何東西出現在畫布上?也許這個問題可能與我之前的評論有關?回調函數中是否存在缺失? – Becky 2015-04-01 23:45:47
@Beki你有卸載處理程序刪除圖像。 https://jsfiddle.net/epistemex/z769z7af/7/ – K3N 2015-04-01 23:52:35