Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome 定义路径后的画布转换和Chrome的最新更新_Google Chrome_Canvas_Width_Line_Transformation - Fatal编程技术网

Google chrome 定义路径后的画布转换和Chrome的最新更新

Google chrome 定义路径后的画布转换和Chrome的最新更新,google-chrome,canvas,width,line,transformation,Google Chrome,Canvas,Width,Line,Transformation,编辑2: 这种不必要的行为在Chrome版本35中似乎已经消失了 /编辑2 编辑: 我很难弄清楚到底是什么问题。但是,路径定义之后的任何转换都不应该再影响路径,但这就是现在正在发生的事情。第二次清除堆栈会弄乱已定义的路径 /编辑 在过去的8个月里,我一直在开发一些绘图程序,这些程序在所有5种主要浏览器中都非常有效。嗯,直到今天 为了防止线宽的缩放,我在渲染之前清除了转换堆栈,这非常有效,现在仍然有效,除了在Chrome中。从今天开始 我想知道我所做的事情是否有根本性的错误,或者仅仅是Chr

编辑2:

这种不必要的行为在Chrome版本35中似乎已经消失了

/编辑2


编辑:

我很难弄清楚到底是什么问题。但是,路径定义之后的任何转换都不应该再影响路径,但这就是现在正在发生的事情。第二次清除堆栈会弄乱已定义的路径

/编辑


在过去的8个月里,我一直在开发一些绘图程序,这些程序在所有5种主要浏览器中都非常有效。嗯,直到今天

为了防止线宽的缩放,我在渲染之前清除了转换堆栈,这非常有效,现在仍然有效,除了在Chrome中。从今天开始

我想知道我所做的事情是否有根本性的错误,或者仅仅是Chrome。问题是,在创建路径之后,我应该能够对转换堆栈执行任何我想要的操作,并且它不应该影响创建的路径的位置、比例或旋转

我尝试做的目标是有一个固定的线宽,它完全独立于特定于形状的变换

// window specific transformation
ctx.setTransform(1, 0, 0, 1, 0, 0); // clear stack
ctx.translate(300, 300);
ctx.scale(1, -1);

// shape specific transformation
ctx.transform(a, b, c, d, e, f);

createPathOfShape(ctx);

// prevent scaling of line width
ctx.setTransform(1, 0, 0, 1, 0, 0); // clear stack

ctx.lineWidth = 1;
ctx.strokeStyle = "rgb(0, 0, 0)";
ctx.stroke();

我确认你的小提琴在最新的Chrome和最新的IE&FF中表现不同

更新:来自whatWG.org:

4.12.4.2.13画布的绘图路径

上下文始终具有当前默认路径。只有一个 当前默认路径,它不是图形状态的一部分

当预期路径是当前默认路径时,它不受影响 通过变换。(这是因为转换已经影响 当前默认路径在构建时,因此在构建时应用它 同时绘制会导致双重转换。)


我确认你的小提琴在最新的Chrome和最新的IE&FF中表现不同

更新:来自whatWG.org:

4.12.4.2.13画布的绘图路径

上下文始终具有当前默认路径。只有一个 当前默认路径,它不是图形状态的一部分

当预期路径是当前默认路径时,它不受影响 通过变换。(这是因为转换已经影响 当前默认路径在构建时,因此在构建时应用它 同时绘制会导致双重转换。)



最新的Chrome有什么问题?线宽不再为1?问题是,定义路径后的任何转换都不应再影响路径,但现在似乎正在发生这种情况。第二次清除堆栈会弄乱已定义的路径。我还更改了标题。也许你可以发布两张图片(预期与看到)来澄清问题。我创建了一个提琴,请参见->我没有在我的计算机上更新Chrome:当我测试时,它按预期工作。然后我更新了,屏幕上再也看不到三角形了。看看它是否还没有被记录,但是你可能会为此提交一个bug。最新的Chrome有什么问题?线宽不再为1?问题是,定义路径后的任何转换都不应再影响路径,但现在似乎正在发生这种情况。第二次清除堆栈会弄乱已定义的路径。我还更改了标题。也许你可以发布两张图片(预期与看到)来澄清问题。我创建了一个提琴,请参见->我没有在我的计算机上更新Chrome:当我测试时,它按预期工作。然后我更新了,屏幕上再也看不到三角形了。看看它是否还没有被记录,但是你可能会为此提交一个bug。在开始绘图之前,我应该能够添加更多具有不同转换的路径。例如,尝试用椭圆弧绘制一朵花,每个叶子都需要一个变换器。如果不可能的话,这将严重削弱画布的威力。恕我直言,马克,我对规格的理解正好相反。“当预期路径是当前默认路径时,它不受转换的影响。”意味着,imho,应用于现有路径的新转换不会改变它。所以它只会改变绘制的方式-渲染部分-。事实上,你引用的部分没有提到转换对路径构建和渲染的影响。(我认为“当前默认路径”更容易理解为“当前路径”。也许他们使用“默认”来强调这样一个事实,即某些方法(如fillRect)确实直接绘制,而不考虑使用“当前默认路径”)“当前默认路径”是在最后一个beginPath(例如context.lineTo)之后添加到上下文中的所有绘图。替代“当前默认路径”的最终将是一个新的路径对象。(路径对象尚未实现——可能在Chrome中除外?)最终,您将创建一个路径对象,并能够使用context.fill(myPathObject)填充该路径。可重用路径——酷,是的!当您可以使用路径对象测试context.isPointInPath(myPathObject)时,这将更酷@gamealchest我想你可能对路径定义之后但填充/笔划之前进行的变换的效果是正确的。在开始绘制之前,我应该能够添加更多具有不同变换的路径。例如,尝试绘制带有椭圆弧的花,你需要为每片叶子设置一个变换器。如果不可能,它将是seri毫无疑问,这会削弱画布的力量。恕我直言,马克,我对规格的理解正好相反。“当预期路径是当前默认路径时,它不受转换的影响。“意味着,imho,应用于现有路径的新变换不会改变它。因此,它只会改变绘制它的方式-渲染部分-。事实上,您引用的部分没有提到影响