html5 怎么实现单击鼠标,记录单击的点,点点之间用直线连接?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html5 怎么实现单击鼠标,记录单击的点,点点之间用直线连接?相关的知识,希望对你有一定的参考价值。

点点连线:

<style>
*padding: 0;
margin: 0;
#canborder:1px solid #ccc;

</style>
<body>
<canvas id="can" width="600" height="600"></canvas>
</body>
<script>
 
var _canvas=document.getElementById("can");
var obj=_canvas.getContext("2d");
var arr=[];
_canvas.onclick = function(e)
obj.beginPath();
obj.moveTo(arr[0],arr[1]);
obj.lineTo(e.offsetX,e.offsetY);
obj.stroke();
arr=[];
arr.unshift(e.offsetX);
arr.push(e.offsetY);


</script>

模仿画笔:

<style type="text/css">
#_canvas
background-color: rgb(240,240,240);

</style>
</head>
<body>
<canvas id="_canvas">sorry, your broswer does not support html5!</canvas>
<script type="text/javascript">
var canvas_ = document.getElementById("_canvas");

//全屏
canvas_.setAttribute("width",screen.width);
canvas_.setAttribute("height",screen.height);


var context = canvas_.getContext("2d");
context.strokeStyle = "blue";
context.lineWidth = 4;

var array_paint = [];
var current_y = 0;
var current_x = 0;
//判断鼠标是否按下
var m_down = false;


function paint()

context.beginPath();
context.moveTo(array_paint[0][0],array_paint[0][1]);
if(array_paint.length == 1)
context.lineTo(array_paint[0][0] +1,array_paint[0][1] +1);
else

var i =1; 
for(i in array_paint)

context.lineTo(array_paint[i][0],array_paint[i][1]);
context.moveTo(array_paint[i][0],array_paint[i][1]);



context.closePath();
context.stroke();



//按下鼠标
canvas_.onmousedown = function(event)


m_down = true;
current_x = event.offsetX;
current_y = event.offsetY;
array_paint.push([current_x,current_y]);
paint();




//鼠标松开,清空数据
canvas_.onmouseup = function(event)

m_down = false;
array_paint = [];



//鼠标按下后拖动
canvas_.onmousemove = function(event)

if(m_down)

current_x = event.offsetX;
current_y = event.offsetY;
array_paint.push([current_x,current_y]);
paint();





</script>
</body>

参考技术A

so easy!

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<canvas id="myCanvas" height="500px" width="1000px" style="border:1px solid red;"></canvas>

<script>
let canvas=document.getElementById('myCanvas')
let ctx=canvas.getContext('2d')

canvas.onclick = function(ev)
let x = ev.pageX-canvas.offsetLeft
let y = ev.pageY-canvas.offsetTop
ctx.strokeStyle="#089DB0"
ctx.lineWidth=2;
ctx.arc(x,y,2,0,2*Math.PI)
ctx.stroke()




</script>
</body>
</html>

参考技术B 用js控制canvas画图本回答被提问者采纳

MFC中单击button并随鼠标移动怎么实现?

对话框上放置一个button ,当鼠标左键单击这个button并持续按下鼠标左键在对话框上移动时,button能随着鼠标的移动而移动即鼠标到哪button就到哪,
当松开鼠标左键时,button停止移动,且button无单击状态变化。这个怎么实现呀,能给出代码参考吗?另外,在对话框以蓝色填充一块矩形,要求button表面上也是这种颜色,但是能正常显示出文字,在拖动button的时候颜色要一直是蓝色,且button要时时可见。有劳大侠们指教了。
VC6中没有WM_MOUSEDRAG呀

按钮移动,嘛,要相应响应WM_MOUSEDRAG事件,可以重载CButton,然后定义新的按钮变量即可;
按钮的颜色只要在上述的重载里加入属性并重绘即可,可能复杂一些,我有彩色按钮类,颜色相同只要自己制定就行
也可以用WM_MOVE吧,这个具体的你也可以查一下MSDN,上面有很详细的解释!
参考技术A 也可以用WM_MOUSEMOVE消息函数实现,只是要多用两个变量
我说下过程:
1,定义一个变量 flag;
2.鼠标按下时flag=1,鼠标弹起时flag=2;
3.在WM_MOUSEMOVE函数中,当flag==1是响应这个消息.
4.用((CButton*)(GetDlgItem(IDC_XXXXID)))->MoveWindow(xxx)//参数要自己计算下 IDC_XXXXID这个是按钮ID
参考技术B 你的响应WM_MOUSEDRAG时间,就可以了,重载CButton,然后让那个按钮是CNEWButton的对象就行了。

或者,你不是就像做一个像VB、VC一样的功能么?不如自己写一个ActiveX空间,自己绘图,不就行了么?我听说VB、VC也是这么做的。

呵呵。。。

以上是关于html5 怎么实现单击鼠标,记录单击的点,点点之间用直线连接?的主要内容,如果未能解决你的问题,请参考以下文章

求助:怎么实现css中—鼠标单击按钮后按钮换图片的效果

大哥们求助:MFC中OnLButtonDown响应函数中,鼠标左键单击的点(point)的坐标是物理坐标还是逻辑坐标啊?

js鼠标单击实现图片切换?

MFC中单击button并随鼠标移动怎么实现?

四个div,单击箭头左右移动,怎么可以实现自动轮播。单击一次移动 一个div??

易语言怎么webbrowser1中模拟鼠标单击?