当前位置: 首页 > 知识库问答 >
问题:

用画布画线

谷梁昊空
2023-03-14

在IE9画布中现在是否支持虚线/点线?目前我正在做与以下内容非常相似的事情:

var CP = window.CanvasRenderingContext2D && CanvasRenderingContext2D.prototype;
if (CP && CP.lineTo){
  CP.dashedLine = function(x,y,x2,y2,dashArray){
    if (!dashArray) dashArray=[10,5];
    if (dashLength==0) dashLength = 0.001; // Hack for Safari
    var dashCount = dashArray.length;
    this.moveTo(x, y);
    var dx = (x2-x), dy = (y2-y);
    var slope = dy/dx;
    var distRemaining = Math.sqrt( dx*dx + dy*dy );
    var dashIndex=0, draw=true;
    while (distRemaining>=0.1){
      var dashLength = dashArray[dashIndex++%dashCount];
      if (dashLength > distRemaining) dashLength = distRemaining;
      var xStep = Math.sqrt( dashLength*dashLength / (1 + slope*slope) );
      if (dx<0) xStep = -xStep;
      x += xStep
      y += slope*xStep;
      this[draw ? 'lineTo' : 'moveTo'](x,y);
      distRemaining -= dashLength;
      draw = !draw;
    }
  }
}

这在IE7、IE8、IE9兼容模式和FireFox中工作很好,然而,在IE9和Chrome中,为每条虚线绘制一个实心笔画。

对为什么会发生这种情况有什么想法吗?

共有1个答案

程树
2023-03-14

还有别的不对劲。它在Chrome中工作得很好:

ctx.beginPath();
ctx.dashedLine(10,10, 100, 100,[4, 4])
ctx.stroke();

http://jsfidle.net/mpg5x/1/

 类似资料:
  • 我找到了几个与此相关的问题和答案,但没有一个解决方案让我明白为什么这段代码不起作用: 我有一个tkinter窗口,其中动态生成了内容——这意味着如果屏幕上有两个或多个小部件要显示,则需要能够向下滚动。我希望能够用小部件填充框架“f”,然后使用画布。创建_window()函数以可滚动方式显示它。 现在显示窗口,但滚动条未启用-类似于滚动区域不正确或滚动条与画布之间的链接不正确。

  • Sketch 里的画布尺寸是无限的。你可以用无限精准的分辨率无关模式来查看画布,或者打开像素模式来查看每一个像素导出后的样子。 如果你想在画布中设置一个固定的边框,你可以直接用画板 (Artboard) 工具创造一个新的画板。 导航 画布中的导航是非常容易的,你可以直接用鼠标滚轮滑动或者电脑的触摸板来控制方向。你还可以按住空格键,来使用抓手工具移动画布。并且,没有任何对象被选中的时候,你可以用方向

  • createCanvasContext CanvasContext ft.createCanvasContext(string canvasId, Object this) 创建 canvas 的绘图上下文 CanvasContext 对象 参数 string canvasId 要获取上下文的 canvas 组件 canvas-id 属性 Object this 在自定义组件下,当前组件实例的th

  • CanvasContext jd.createCanvasContext(string canvasId, Object this) 创建 canvas 的绘图上下文 CanvasContext 对象 参数 string canvasId 要获取上下文的 canvas 组件 canvas-id 属性 Object this 在自定义组件下,当前组件实例的this,表示在这个自定义组件下查找拥有 c

  • 属性 类型 默认值 必填 说明 type string 否 指定 canvas 类型,支持 2d,基础库版本1.10.11开始支持2d和webgl canvas-id string 否 canvas 组件的唯一标识符 disableScroll Boolean false 否 当在 canvas 中移动时且有绑定手势事件时,禁止屏幕滚动以及下拉刷新 bindtouchstart 手指触摸动作开始

  • 我正在使用硒与Java(最新的两个)。试图在我们的WebApp中的一个模式内的一个小画布区域上进行绘制。我们用来画布的库是'Signature pad JS'。我已经确认了它不是在iframe或任何可能出现问题的棘手的东西(它只是一个带有div.signature-input canvas元素的常规div.modal-body)。 但它什么也没做。我在这里看了很多stackoverflow的帖子,