2013-12-11 414 views
1

我想在鼠標點擊畫布上繪製一個填充(或未填充)的圓圈,但我無法讓我的代碼正常工作,我已經嘗試了幾乎所有的東西!在鼠標點擊畫布上畫一個實心圓圈

這是我的HTML:

<div id="images"></div> 
<canvas style="margin:0;padding:0;position:relative;left:50px;top:50px;" id="imgCanvas" width="250" height="250" onclick="draw(e)"></canvas> 

和我目前的腳本:

var canvas = document.getElementById("imgCanvas"); 
var context = canvas.getContext("2d"); 

function createImageOnCanvas(imageId) { 
    canvas.style.display = "block"; 
    document.getElementById("images").style.overflowY = "hidden"; 
    var img = new Image(300, 300); 
    img.src = document.getElementById(imageId).src; 
    context.drawImage(img, (0), (0)); //onload.... 
} 

function draw(e) { 
    var pos = getMousePos(canvas, e); 
    posx = pos.x; 
    posy = pos.y; 
    context.fillStyle = "#000000"; 
    context.arc(posx, posy, 50, 0, 2 * Math.PI); 
} 

function getMousePos(canvas, evt) { 
    var rect = canvas.getBoundingClientRect(); 
    return { 
     x: evt.clientX - rect.left, 
     y: evt.clientY - rect.top 
    }; 
} 

代碼工作得很好,當且僅當我刪除「使用嚴格的」;但是在這個作業我必須編寫一個代碼才能運行,這是我的問題。

這是jsFiddle

回答

6

自己解決了。

function draw(e) { 

    var canvas = document.getElementById("imgCanvas"); 
    var context = canvas.getContext("2d"); 
    var rect = canvas.getBoundingClientRect(); 
    var posx = e.clientX - rect.left; 
    var posy = e.clientY - rect.top; 

    context.fillStyle = "#000000"; 
    context.beginPath(); 
    context.arc(posx, posy, 50, 0, 2 * Math.PI); 
    context.fill(); 
} 

此腳本適用於我。