HTML5画布线条图,只需点击两下鼠标

时间:2014-10-02 14:52:26

标签: javascript html5 canvas

var clicks = 0;
var lastClick = [0, 0];

document.getElementById('imageView').addEventListener('click', drawLine, false);

function getCursorPosition(e) {
    var x;
    var y;

    if (e.pageX != undefined && e.pageY != undefined) {
        x = e.pageX;
        y = e.pageY;
    } else {
        x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
        y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
    }

    return [x, y];
}

function drawLine(e) {
    context = this.getContext('2d');

    x = getCursorPosition(e)[0] - this.offsetLeft;
    y = getCursorPosition(e)[1] - this.offsetTop;

    if (clicks != 1) {
        clicks++;
    } else {
        context.beginPath();
        context.moveTo(lastClick[0], lastClick[1]);
        context.lineTo(x, y, 6);

        context.strokeStyle = '#000000';
        context.stroke();

        clicks = 0;
    }
    lastClick = [x, y];
};

这是用两次鼠标点击绘制线的代码。但我不知道是否要按下按钮(我有一个带各种工具的工具栏)

<input type="image" src="images/line.ico" width="25" height="25">

请帮忙 提前谢谢!

1 个答案:

答案 0 :(得分:0)

我修改了你的代码来纠正它。试试这个.... :)

<html>
<head><title></title>
<script>
 var clicks = 0;
 var lastClick = [0, 0];

var element;
function startDrawing()
{
    element = document.getElementById('imageView');
    if(element != null || element != undefined)
     {
          element.addEventListener('click', drawLine, false);
     }
}

function getCursorPosition(e) {
var x;
var y;

if (e.pageX != undefined && e.pageY != undefined) {
    x = e.pageX;
    y = e.pageY;
} else {
    x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
    y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
}

return [x, y];
}

function drawLine(e) {
context = this.getContext('2d');

x = getCursorPosition(e)[0] - this.offsetLeft;
y = getCursorPosition(e)[1] - this.offsetTop;

if (clicks != 1) {
    clicks++;
} else {
    context.beginPath();
    context.moveTo(lastClick[0], lastClick[1]);
    context.lineTo(x, y, 6);

    context.strokeStyle = '#000000';
    context.stroke();

    clicks = 0;
   }
lastClick = [x, y];
}
</script>
</head>
<body>
    <input type="image" src="images/line.ico" width="25" height="25" onclick="startDrawing()">
    <!--Your image element will be here -->
</body>
</html>