jquery mobile的canvas偏移量

时间:2015-01-02 12:47:47

标签: javascript jquery canvas

我在这里设置了一支笔

http://codepen.io/prantikv/pen/LEbRKY

我正在使用画布来抚摸鼠标或触摸。它没有附加jquery或jquery mobile时工作正常,但是当我附加它时,我在画布上获得了一个偏移,而且只在Y轴上获得了绘图。

我使用以下代码绘制:

var el = document.getElementById('c');
var ctx = el.getContext('2d');
var isDrawing;

el.onmousedown = function(e) {
  isDrawing = true;
  ctx.lineWidth = 10;
  ctx.lineJoin = ctx.lineCap = 'round';
  ctx.moveTo(e.clientX, e.clientY);
  console.log(e.clientX, e.clientY);

  console.log(e);
  console.log(e.pageX,e.pageY);
};
el.onmousemove = function(e) {
  if (isDrawing) {
    ctx.lineTo(e.layerX, e.layerY);
    ctx.stroke();
  }
};
el.onmouseup = function() {
  isDrawing = false;
}; 

似乎是什么问题。我尝试使用layerY和pageY以及screenY,但不准确。

我应该选择哪些值?

1 个答案:

答案 0 :(得分:0)

这是解决方案

var el = document.getElementById('c');
var jqEl = jQuery('#c')
var ctx = el.getContext('2d');
var isDrawing;
el.onmousedown = function(e) {
  isDrawing = true;
  ctx.lineWidth = 10;
  ctx.lineJoin = ctx.lineCap = 'round';
  ctx.moveTo(e.clientX - jqEl.position().left, e.clientY - jqEl.position().top);
};
el.onmousemove = function(e) {
  if (isDrawing) {
    ctx.lineTo(e.clientX - jqEl.position().left, e.clientY - jqEl.position().top);
    ctx.stroke();
  }
};
el.onmouseup = function() {
  isDrawing = false;
};