RaphealJS调整大小和鼠标移位

时间:2013-04-28 01:43:21

标签: javascript jquery canvas svg

我一直在使用RaphealJS创建矢量绘图工具,我已完成所有绘图并正常工作

当我调整浏览器窗口大小并尝试从正在绘制的位置绘制鼠标指针时,我的问题就出现了。

我在浏览器上使用鼠标移动事件并绘制线条,如此

$(document).mousemove(function(e){
    if (IE) {
      var dh = $("#details").height();
      var dw = $("#details").width();
          xx = e.offsetX;
          yy = e.offsetY;
    } else {
       var offset = $("#workcanvas").offset();
       xx = e.pageX - offset.left;
       yy = e.pageY - offset.top;
    }
    if (lineObject != null) {
        lineObject.updateEnd(xx, yy);
    } else {
        lineObject = Line(xx, yy, xx, yy, MasterCanvas);
   }
});

我创建了画布和背景图像

var MasterCanvas = Raphael($("#workcanvas").attr("id"));

var MasterBGImage = MasterCanvas.image(imgPath, 0, 0, $("#workcanvas").width(),$("#workcanvas").height());

MasterCanvas.setViewBox(0, 0, $("#workcanvas").width(), $("#workcanvas").height(), true);

在我的窗口调整大小事件我试过这个

MasterCanvas.setSize($("#workcanvas").width(), $("#workcanvas").height());

现在我已经在几天内打败了我的头,无济于事。请注意:我可以使用绘图功能,只要窗口没有调整大小,每个东西都很棒,但是当页面调整大小时,绘图点就会关闭。

1 个答案:

答案 0 :(得分:0)

以防万一其他人有这个问题,结果是一个viewBox问题,我不得不根据viewBox坐标计算鼠标位置而不是屏幕,所以原来的代码变成:

 $(document).mousemove(function(e){

    var uupos = MasterCanvas.canvas.createSVGPoint();
    uupos.x = e.clientX;
    uupos.y = e.clientY;
    var ctm = MasterCanvas.canvas.getScreenCTM();
    if (ctm = ctm.inverse())
    uupos = uupos.matrixTransform(ctm);
    x = uupos.x;
    y = uupos.y;

    if (lineObject != null) {
        lineObject.updateEnd(x, y);
    } else {
        lineObject = Line(x, y, x, y, MasterCanvas);
   }
});

修改 看起来这个解决方案只是SVG而且它在IE8中不起作用,这对我来说是一个要求 - 任何想法。

VML中是否存在类似viewBox坐标的内容