单击鼠标在画布上绘制一个实心圆
Drawing a filled circle in a canvas on mouseclick
我想在鼠标点击时在画布上画一个填充(或未填充)的圆圈,但我无法使代码正常工作,我几乎已经尝试了所有方法!
这是我的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
};
}
如果并且仅当我删除"use strict";,但在这项任务中,我必须制作一个即使使用它也能工作的代码,这是我的问题。
这是jsFiddle
自己解决了。
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();
}
这个脚本对我来说很好。
相关文章:
- 如何在鼠标悬停时在另一个图像上滑动图像.
- 将鼠标悬停在Angular JS中的一个元素上,并将Class添加到另一个元素中
- 如何激活下拉菜单:在一个元素上单击768px宽度下方,在另一个元素上将鼠标悬停在768px上方
- 当鼠标也在触摸另一个元素时,d3.js鼠标悬停事件未被触发
- 我想要一个类似于网站 https://onlycoin.com/ 的jQuery鼠标滚动动画效果
- 如何将此转盘调整为仅当用户将鼠标悬停在其中一个框上时暂停
- 将鼠标悬停在一个元素上,可以将类添加到另一个元素中
- 单击鼠标在画布上绘制一个实心圆
- 将键盘和鼠标事件从一个浏览器选项卡发送到另一个
- 正在创建一个事件以更改鼠标悬停时的图片
- Jquery:当鼠标指针进入和离开元素时,创建一个弹出窗口
- 将鼠标悬停在按钮上会导致另一个按钮悬停在上面
- 鼠标滚轮按压-描述了一个事件的名称,以及如何使用jQuery侦听它
- 我如何让我的网站检测鼠标是否被使用,然后在元素中添加一个类
- 如何将鼠标上的图像更改为另一个图像
- 我正试图创建一个鼠标事件,该鼠标事件允许用户使用“;ctrl”;键和换档键
- 重新启动音频时,我做另一个鼠标悬停
- 创建一个鼠标记录器像Clicktale和Crazy Egg
- 模拟一个鼠标下,点击,鼠标上的序列在Tampermonkey
- 停止下一个鼠标悬停事件的触发,直到内部函数完成