如何在html画布上获得笔位?

时间:2016-02-14 16:48:05

标签: javascript html html5 canvas

我认为旧版本的画布具有canvas.PenPos属性,可让您查看当前笔位置的位置。我主要是将其用于调试目的并相对绘制(例如,当前位置右侧50px长的线)。目前有什么办法吗?如果没有,他们为什么要删除它??

我所指的笔位是虚拟"笔"绘图上下文(例如,您可以通过调用var ctx = canvas.getContext('2d')获得)使用而不是物理笔或鼠标。

我不是想用鼠标画画。同样,这不是我想要的物理笔,它是用{{移动的虚拟笔'。 1}}

2 个答案:

答案 0 :(得分:0)

试试这个

window.onload =function(){
var pad = document.querySelector("#pad");
var pctx = pad.getContext('2d');

pad.addEventListener("mousemove",function(e) {

  
  
  position = getPosition(pad,e);
  
   pctx.clearRect(0, 0, pad.width, pad.height);
   pctx.fillText("x: "+position.x +", y:" + position.y, 10, 10);
  

})}

function getPosition(p,e) {

   var a = p.getBoundingClientRect();
   return {
     x : e.clientX - a.left,
     y : e.clientY - a.top
   };
}
#pad
{
  border:thin solid black; 
}
<canvas id="pad" height="200" width="200">

答案 1 :(得分:0)

根据w3.org,没有一种方法可以返回笔的位置。

由于.getContext(“ 2d”)方法返回一个对象,因此可以将笔位置存储为属性,并根据需要调用它们:

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");

ctx.beginPath();

//Start position
ctx.x = 100;
ctx.y = 100;
ctx.moveTo(ctx.x, ctx.y);
ctx.x = ctx.x + 100;
ctx.y = ctx.y + 300;
ctx.lineTo(ctx.x, ctx.y);
ctx.stroke();

但是在创建圆弧时,您需要随后计算笔的新位置。