From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/zh-cn/web/api/path2d/addpath/index.html | 181 ++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 files/zh-cn/web/api/path2d/addpath/index.html (limited to 'files/zh-cn/web/api/path2d/addpath/index.html') diff --git a/files/zh-cn/web/api/path2d/addpath/index.html b/files/zh-cn/web/api/path2d/addpath/index.html new file mode 100644 index 0000000000..a19a3ce8cf --- /dev/null +++ b/files/zh-cn/web/api/path2d/addpath/index.html @@ -0,0 +1,181 @@ +--- +title: Path2D.addPath() +slug: Web/API/Path2D/addPath +translation_of: Web/API/Path2D/addPath +--- +
{{APIRef("Canvas API")}}
+ +

Path2D.addPath() 是 Canvas 2D API 根据指定路径变量添加路径的方法。

+ +

语法

+ +
void path.addPath(path [, transform]);
+
+ +

参数

+ +
+
path
+
需要添加的 {{domxref("Path2D")}} 路径。
+
transform {{optional_inline}}
+
{{domxref("SVGMatrix")}} 作为新增路径的变换矩阵。
+
+ +

示例

+ +

使用 addPath 方法

+ +

这是一段使用 addPath 方法的简单的代码片段。

+ +
var canvas = document.getElementById("canvas");
+var ctx = canvas.getContext("2d");
+
+// Create a new path with a rect
+var p1 = new Path2D();
+p1.rect(0,0,100,100);
+
+// Create another path with a rect
+var p2 = new Path2D();
+p2.rect(0,0,100,100);
+
+// Create transformation matrix that moves vertically 300 points to the right
+var m = document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGMatrix();
+m.a = 1; m.b = 0;
+m.c = 0; m.d = 1;
+m.e = 300; m.f = 0;
+
+// add the second path to the first path
+p1.addPath(p2, m);
+
+// Finally, fill the first path onto the canvas
+ctx.fill(p1);
+
+ +

修改下面的代码并在线查看 canvas 的变化 (查看浏览器兼容性列表,确定你目前的浏览器是否支持这个方法):

+ +
+
Playable code
+ +
<canvas id="canvas" width="400" height="200" class="playable-canvas"></canvas>
+<div class="playable-buttons">
+  <input id="edit" type="button" value="Edit" />
+  <input id="reset" type="button" value="Reset" />
+</div>
+<textarea id="code" class="playable-code" style="height:220px;">
+var p1 = new Path2D();
+p1.rect(0,0,100,100);
+
+var p2 = new Path2D();
+p2.rect(0,0,100,100);
+
+var m = document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGMatrix();
+m.a = 1; m.b = 0;
+m.c = 0; m.d = 1;
+m.e = 300; m.f = 0;
+
+p1.addPath(p2, m);
+ctx.fill(p1);</textarea>
+
+ +
var canvas = document.getElementById("canvas");
+var ctx = canvas.getContext("2d");
+var textarea = document.getElementById("code");
+var reset = document.getElementById("reset");
+var edit = document.getElementById("edit");
+var code = textarea.value;
+
+function drawCanvas() {
+  ctx.clearRect(0, 0, canvas.width, canvas.height);
+  eval(textarea.value);
+}
+
+reset.addEventListener("click", function() {
+  textarea.value = code;
+  drawCanvas();
+});
+
+edit.addEventListener("click", function() {
+  textarea.focus();
+})
+
+textarea.addEventListener("input", drawCanvas);
+window.addEventListener("load", drawCanvas);
+
+
+ +

{{ EmbedLiveSample('Playable_code', 700, 500) }}

+ +

规范描述

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', "scripting.html#dom-path2d-addpath", "Path2D.addPath()")}}{{Spec2('HTML WHATWG')}}Initial defintion.
+ +

浏览器兼容性

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}}{{CompatGeckoDesktop(34)}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile(34)}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}
+
+ +

参见

+ + -- cgit v1.2.3-54-g00ecf