ãã£ã³ãã¹ã®ç°å¢ãã»ããã¢ãããã¾ããã®ã§ããã£ã³ãã¹ã«æç»ããæ¹æ³ã®è©³ç´°ã«å ¥ããã¨ãã§ãã¾ãããã®è¨äºã®çµããã¾ã§ã«ãé·æ¹å½¢ãä¸è§å½¢ãç´ç·ãåå¼§ãæ²ç·ãæãæ¹æ³ãå¦ã³ãåºæ¬çãªå³å½¢ã«ã¤ãã¦çè§£ã§ãã¾ãããã£ã³ãã¹ã«ãªãã¸ã§ã¯ããæãéã¯ãã¹ãæ±ããã¨ãä¸å¯æ¬ ã§ãã®ã§ããã®æ¹æ³ãè¦ã¦ããã¾ãã
ã°ãªããæç»ãå§ããåã«ããã£ã³ãã¹ã®ã°ãªããããããã¯åº§æ¨ç©ºéã«ã¤ãã¦è©±ãå¿ è¦ãããã¾ããåã®ãã¼ã¸ã® HTML ã¹ã±ã«ãã³ã¯ãå¹ 150 ãã¯ã»ã«ãé«ã 150 ãã¯ã»ã«ã® canvas è¦ç´ ãæã£ã¦ãã¾ããã
æ®éãã°ãªããä¸ã® 1 åä½ã¯ãã£ã³ãã¹ä¸ã® 1 ãã¯ã»ã«ã«ç¸å½ãã¾ãããã®ã°ãªããã®åç¹ã¯ãå·¦ä¸ã®è§ã« (0,0) ã®åº§æ¨ãé ç½®ããã¦ãã¾ãããã¹ã¦ã®è¦ç´ ããã®åç¹ããç¸å¯¾çã«é ç½®ããã¾ãããã£ã¦éãæ£æ¹å½¢ã®å·¦ä¸ã®å ´æã¯å·¦ãã x ãã¯ã»ã«ãä¸ãã y ãã¯ã»ã«ã®ã (x,y) ã®ä½ç½®ã«ãªãã¾ãããã®ãã¥ã¼ããªã¢ã«ã®å¾åã§ã¯ãåç¹ãå¥ã®ä½ç½®ã«ç§»åããããã°ãªãããå転ãããããæ¡å¤§ç¸®å°ãããããæ¹æ³ãç´¹ä»ãã¾ãããä»ã¯æ¢å®ã®ã¾ã¾ã«ãã¦ããã¾ãããã
é·æ¹å½¢ã®æç»SVG ã¨ã¯ç°ãªãã <canvas>
㯠2 ã¤ã®åºæ¬çãªå³å½¢ãé·æ¹å½¢ã¨ãã¹ï¼ç´ç·ã§çµãã ç¹ã®ãªã¹ãï¼ã®ã¿ã«å¯¾å¿ãã¦ãã¾ããä»ã®å
¨ã¦ã®å³å½¢ã¯ 1 ã¤ä»¥ä¸ã®ãã¹ã®çµã¿åããã§ä½ããªãã¦ã¯ãªãã¾ããã幸ããªãã¨ã«ããã¹ãæãä¸é£ã®é¢æ°ããããã¨ã¦ãè¤éãªå³å½¢ãä½ããã¨ãã§ãã¾ãã
æåã«é·æ¹å½¢ãè¦ã¦ããã¾ãããããã£ã³ãã¹ã«é·æ¹å½¢ãæã颿°ã 3 ã¤ããã¾ãã
fillRect(x, y, width, height)
å¡ãã¤ã¶ãããé·æ¹å½¢ãæãã¾ãã
strokeRect(x, y, width, height)
é·æ¹å½¢ã®è¼ªéãæãã¾ãã
clearRect(x, y, width, height)
æå®ãããé åãæ¶å»ããå®å ¨ãªéæã«ãã¾ãã
3 ã¤ã®é¢æ°ã¯åã弿°ãåãã¾ãã x
㨠y
ã¯ãã£ã³ãã¹ã«ãããé·æ¹å½¢ã®å·¦ä¸ã®è§ã®ä½ç½®ï¼åç¹ããã®ç¸å¯¾ä½ç½®ï¼ãæå®ãã¾ãã width
㨠height
ã¯é·æ¹å½¢ã®å¤§ãããæå®ãã¾ãã
以ä¸ã®ãã®ã¯åãã¼ã¸ã® draw()
颿°ã§ãããããã§ã¯ããã 3 ã¤ã®é¢æ°ã使ç¨ãã¦ãã¾ãã
<html lang="en">
<body>
<canvas id="canvas" width="150" height="150"></canvas>
</body>
</html>
function draw() {
const canvas = document.getElementById("canvas");
if (canvas.getContext) {
const ctx = canvas.getContext("2d");
ctx.fillRect(25, 25, 100, 100);
ctx.clearRect(45, 45, 60, 60);
ctx.strokeRect(50, 50, 50, 50);
}
}
çµæã¯ä»¥ä¸ã®ããã«è¦ããã¯ãã§ãã
fillRect()
颿°ã¯ 100 ãã¯ã»ã«åã®å¤§ããªé»ãæ£æ¹å½¢ãæãã¾ãã clearRect()
颿°ã¯ä¸å¿ãã 60x60 ãã¯ã»ã«ã®æ£æ¹å½¢ãåãé¤ããæå¾ã« strokeRect()
ãæ¶å»ãããæ£æ¹å½¢ã®ä¸ã« 50x50 ãã¯ã»ã«ã®é·æ¹å½¢ã®è¼ªéãæãã¾ãã
å¾ã®ãã¼ã¸ã§ã¯ã clearRect()
ã«ä»£ãã 2 ã¤ã®ã¡ã½ãããç´¹ä»ããæç»ãããå³å½¢ã®è²ã¨è¼ªéã®ã¹ã¿ã¤ã«ã夿´ããæ¹æ³ã«ã¤ãã¦èª¬æãã¾ãã
次ã®ç¯ã§è¦ããã¹é¢æ°ã¨ã¯ç°ãªãã 3 ã¤ã®é·æ¹å½¢é¢æ°ã¯ãã¹ã¦ãã£ã³ãã¹ã«å³åº§ã«æç»ããã¾ãã
ãã¹ãæãããã§ããã¹ã«ã¤ãã¦è¦ã¦ã¿ã¾ãããããã¹ã¯ç¹ã®ãªã¹ãã§ããããã¾ãã¾ãªå½¢ãæ²ç·ãå¹ ãè²ã®ç·åã«ãã£ã¦çµã°ãã¦ãã¾ãããã¹ã¯ããµããã¹ã®ããã«éãããã¨ãã§ãã¾ãããã¹ã使ã£ã¦å³å½¢ãä½ãã«ã¯ãããã¤ãã®ç¹å¥ãªæé ãè¸ã¿ã¾ãã
ãããã®ã¹ãããã§ä½¿ç¨ãã颿°ã以ä¸ã«ç¤ºãã¾ãã
beginPath()
æ°ãããã¹ã使ãã¾ãããã¹ã使ããã¨ä»¥éã®æç»ã³ãã³ãã¯ããã®ãã¹ãæ§ç¯ããããã«ç´æ¥ä½ç¨ãã¾ãã
ãªãã¸ã§ã¯ãã®ããã«ãã¾ãã¾ãªãã¹ãè¨å®ããã¡ã½ãã群ã§ãã
closePath()
ç´ç·ããã¹ã«è¿½å ããç¾å¨ã®ãµããã¹ã®éå§å°ç¹ã«ã¤ãªãã¾ãã
stroke()
輪éããªããæ¹å¼ã§ãå³å½¢ãæãã¾ãã
fill()
ãã¹ã®å é¨é åãå¡ãã¤ã¶ãã¦ãåè²ã®å³å½¢ãæãã¾ãã
ãã¹ãä½ãæåã®ä½æ¥ã¯ beginPath()
ã¡ã½ãããå¼ã³åºããã¨ã§ããå
é¨ã§ã¯ããã¹ã¯å³å½¢ãä¸ç·ã«ä½ããµããã¹ï¼ç·ãåå¼§ãªã©ï¼ã®ãªã¹ãã¨ãã¦ä¿åããã¾ãããã®ã¡ã½ãããå¼ã³åºãããæ¯ã«ããªã¹ãã¯ãªã»ããããæ°ããå³å½¢ãå§ãããã¨ãã§ãã¾ãã
ã¡ã¢: beginPath()
ãå¼ã³åºããç´å¾ããã£ã³ãã¹ãæ°è¦ä½æããç´å¾ãªã©ãç¾å¨ã®ãã¹ã空ã§ããã¨ãã«æåã«ãã¹ãæ§ç¯ããã³ãã³ãã¯ãå®éã¯ä½ã§ãããã«ããããã常㫠moveTo()
ã¨ãã¦æ±ããã¾ãããã®ãããã¹ããªã»ããããå¾ã¯ã»ã¼å¿
ããéå§ä½ç½®ãæç¤ºãããã¨ãå¿
è¦ã«ãªãã§ãããã
2 çªç®ã®ä½æ¥ã¯æãããå®éã®ãã¹ãå®ç¾©ããã¡ã½ãããå¼ã³åºããã¨ã§ããã¾ããªãã¿ããã¨ã«ãªãã¾ãã
3 çªç®ã¯ä»»æã®ä½æ¥ã§ããã closePath()
ã¡ã½ãããå¼ã³åºããã¨ã§ãããã®ã¡ã½ããã¯ç¾å¨ã®ç¹ããå§ç¹ã«åãã¦ç´ç·ãæããã¨ã§å³å½¢ãéãããã¨ãã¾ããããå³å½¢ããã§ã«éãããã¦ããããªã¹ãã«ç¹ãã²ã¨ã¤ãããªãå ´åã¯ãã®é¢æ°ã¯ä½ããã¾ããã
ã¡ã¢: fill()
ãå¼ã³åºãããã¨ããéãã¦ããå³å½¢ã¯èªåçã«éããããã®ã§ãclosePath()
ãå¼ã³åºãå¿
è¦ã¯ããã¾ãããããã¯ãstroke()
ãå¼ã³åºããã¨ãã¯ãã¦ã¯ã¾ãã¾ããã
ä¾ãã°ãä¸è§å½¢ãæãã³ã¼ãã¯æ¬¡ã®ããã«ãªãã¾ãã
<html lang="en">
<body>
<canvas id="canvas" width="100" height="100"></canvas>
</body>
</html>
function draw() {
const canvas = document.getElementById("canvas");
if (canvas.getContext) {
const ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(75, 50);
ctx.lineTo(100, 75);
ctx.lineTo(100, 25);
ctx.fill();
}
}
è¡¨ç¤ºçµæã¯ä»¥ä¸ã®ããã«ãªãã¾ãã
ãã³ã®ç§»åé常ã«ä¾¿å©ãªé¢æ°ã®ã²ã¨ã¤ã«ã moveTo()
颿°ãããã¾ããããã¯å®éã«ã¯ä½ãæç»ãã¾ããããä¸è¨ã®ãã¹ã®ãªã¹ãã®ä¸é¨ã¨ãªãã¾ããããã¯ããã³ãéçãç´ã®ä¸ã®ããå ´æããæã¡ä¸ãã¦ã次ã®å ´æã«ç½®ããããªãã®ã ã¨æãã°ããã§ãããã
moveTo(x, y)
x
㨠y
ã§æå®ãã座æ¨ã«ããã³ãç§»åãã¾ãã
ãã£ã³ãã¹ãåæåãããã beginPath()
ã¡ã½ãããå¼ã³åºãããã¨ãããµã¤ã㯠moveTo()
ã¡ã½ããã使ã£ã¦å§ç¹ãä»ã®å ´æã«é
ç½®ãã¾ãã moveTo()
ã¡ã½ããã使ã£ã¦ç¹ãã£ã¦ããªããã¹ãæããã¨ãã§ãã¾ããä¸ã®ã¹ãã¤ãªã¼ãè¦ã¦ãã ããã
ãããããªãèªèº«ã§è©¦ãã«ã¯ã以ä¸ã®ã³ã¼ãã使ããã¨ãã§ãã¾ããããã»ã©è¦ã draw()
颿°ã«è²¼ãä»ããã ãã§ãã
<html lang="en">
<body>
<canvas id="canvas" width="150" height="150"></canvas>
</body>
</html>
function draw() {
const canvas = document.getElementById("canvas");
if (canvas.getContext) {
const ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // å¤ã®å
ctx.moveTo(110, 75);
ctx.arc(75, 75, 35, 0, Math.PI, false); // å£ (æè¨åã)
ctx.moveTo(65, 65);
ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // å·¦ç®
ctx.moveTo(95, 65);
ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // å³ç®
ctx.stroke();
}
}
è¡¨ç¤ºçµæã¯ä»¥ä¸ã®ããã«ãªãã¾ãã
ãããé£ç¶ããç·ãè¦ããå ´åã¯ãmoveTo()
ãå¼ã³åºãè¡ãåé¤ãã¦ãã ããã
ã¡ã¢: arc()
颿°ã¨ãã®å¼æ°ã®è§£èª¬ã¯åå¼§ã®ç¯ãã覧ä¸ããã
ç´ç·ãæãã«ã¯ lineTo()
ã¡ã½ããã使ãã¾ãã
lineTo(x, y)
ç¾å¨ã®æç»ä½ç½®ãã x
㨠y
ã§æå®ããä½ç½®ã«ãç·ãæãã¾ãã
ãã®ã¡ã½ããã¯ãç·ã®çµç¹ã®åº§æ¨ã§ãã x
㨠y
ã® 2 ã¤ã®å¼æ°ãã¨ãã¾ããå§ç¹ã¯ä»¥åã«æããããã¹ã«ä¾åããåã®ãã¹ã®çµç¹ã次ã®ãã¹ã®å§ç¹ã¨ãªããã¨ãã£ãå
·åã§ããå§ç¹ã¯ã moveTo()
ã¡ã½ãããç¨ãã¦å¤æ´ãããã¨ãã§ãã¾ãã
次ã®ä¾ã§ã¯ 2 ã¤ã®ä¸è§å½¢ãæããã¦ãã¾ãã 1 ã¤ã¯å¡ãã¤ã¶ããããã 1 ã¤ã¯è¼ªéç·ãæããã¾ãã
<html lang="en">
<body>
<canvas id="canvas" width="150" height="150"></canvas>
</body>
</html>
function draw() {
const canvas = document.getElementById("canvas");
if (canvas.getContext) {
const ctx = canvas.getContext("2d");
// å¡ãã¤ã¶ããä¸è§å½¢
ctx.beginPath();
ctx.moveTo(25, 25);
ctx.lineTo(105, 25);
ctx.lineTo(25, 105);
ctx.fill();
// 輪éã®ä¸è§å½¢
ctx.beginPath();
ctx.moveTo(125, 125);
ctx.lineTo(125, 45);
ctx.lineTo(45, 125);
ctx.closePath();
ctx.stroke();
}
}
æåã«æ°ããå³å½¢ã®ãã¹ãå§ããããã« beginPath()
ã¡ã½ãããå¼ã°ãã¦ãã¾ããæ¬¡ã« å§ç¹ãæãä½ç½®ã«ç§»åããããã« moveTo()
ã¡ã½ãããå¼ã°ãã¦ãã¾ããä¸è§å½¢ã®ä¸¡å´ã®è¾ºãä½ã 2 ã¤ã®ç·ãæããã¦ãã¾ãã
å¡ãã¤ã¶ãããä¸è§å½¢ã¨è¼ªéç·ã®ä¸è§å½¢ã®éãã«æ°ã¥ãã§ããããããã¯åè¿°ããããã«ãå³å½¢ã¯ãã¹ãå¡ãã¤ã¶ãããã¨ãã«ã¯èªåçã«éãããã¾ããã輪éç·ã®ã¨ãã«ã¯éããããªãããã§ãããããæç»ãããä¸è§å½¢ã® closePath()
ãçããããå®å
¨ãªä¸è§å½¢ã§ã¯ãªãã 2 æ¬ã®ç·ã ããæç»ããããã¨ã«ãªãã¾ãã
åå¼§ãåãæãããã« arc()
ã¾ã㯠arcTo()
ã¡ã½ããã使ãã¾ãã
arc(x, y, radius, startAngle, endAngle, counterclockwise)
(x, y) ãä¸å¿ã®ä½ç½®ã radius ãåå¾ã startAngle ãéå§è§åº¦ã endAngle ãçµäºè§åº¦ã counterclockwise ãæ¹åï¼æ¢å®ã§ã¯æè¨åãï¼ã¨ããåå¼§ãæãã¾ãã
arcTo(x1, y1, x2, y2, radius)
æå®ããå¶å¾¡ç¹ã¨åå¾ã«ãã£ã¦åå¼§ãæãããã®åã®æç»ä½ç½®ã¨ç´ç·ã§æ¥ç¶ãã¾ãã
ãã£ã¨è©³ãã arc
ã¡ã½ãããè¦ã¦ã¿ã¾ãããããã®ã¡ã½ãã㯠6 ã¤ã®å¼æ°ãåãã¾ãã x
㨠y
ã¯åå¼§ãæç»ããåã®ä¸å¿ã®åº§æ¨ã§ãã x
㨠y
ã¯åå¼§ãæç»ããåã®ä¸å¿ã®åº§æ¨ã§ã radius
ã¯ãã®åã®éãåå¾ã§ãã startAngle
ããã³ endAngle
弿°ã¯ãåã®ã«ã¼ãã«æ²¿ã£ãåå¼§ã®å§ç¹ã¨çµç¹ãã©ã¸ã¢ã³åä½ã§æå®ãã¾ããããã㯠x 軸ããæ¸¬å®ããã¾ãã counterclockwise
弿°ã¯è«çå¤ã§ã true
ã®å ´åã¯åæè¨åãã«ããã以å¤ã®å ´åã¯æè¨åãã«åå¼§ãæããã¾ãã
ã¡ã¢: arc
颿°ã®è§åº¦ã¯åº¦ã§ã¯ãªããã©ã¸ã¢ã³ã§è¨ç®ããã¾ãã度ããã©ã¸ã¢ã³ã«å¤æããã«ã¯ã JavaScript ã®å¼ã§ã¯ radians = (Math.PI/180)*degrees
ã使ããã¨ãã§ãã¾ãã
次ã®ä¾ã¯ãä¸ã§è¦ããã®ãããå°ãè¤éã§ãããã㯠12 種é¡ã®åå¼§ããããããç°ãªãè§åº¦ã¨å¡ãã¤ã¶ãã§æç»ãã¾ãã
2 ã¤ã® for
ã«ã¼ãã¯åå¼§ã®è¡ã¨åã®ã«ã¼ãã§ãããã¹ã¦ã®åå¼§æ¯ã« beginPath()
ã使ã£ã¦æ°ãããã¹ãå§ãã¾ããã³ã¼ãã§ã¯ãããããããããããã«åå¼§ã®å弿°ã夿°ã«ãã¦ãã¾ãããå®çæ´»ã§ã¯å¿
ãããããããå¿
è¦ã¯ãªãã§ãããã
x
㨠y
ã®åº§æ¨ã¯ååã«æç¢ºã§ããã¯ãã§ãã radius
㨠startAngle
ã¯åºå®ã§ãã endAngle
ã¯æåã®åã§ 180 度ï¼ååï¼ããå§ã¾ãã90 度ãã¤å¢å ããæå¾ã®åã§å®å
¨ãªåã«ãªãã¾ãã
clockwise
弿°ã®æã¯æå㨠3 çªç®ã®åã§ã¯æè¨åãã®åå¼§ã¨ã㦠2 çªç®ã¨ 4 çªç®ã®åã§ã¯åæè¨åãã®åå¼§ã¨ããçµæã«ãªãã¾ããæå¾ã«ã if
æã¯ä¸ååã¯è¼ªéãæç»ãããåå¼§ããä¸ååã¯å¡ãããåå¼§ãä½ãã¾ãã
ã¡ã¢: ãã®ä¾ã§ã¯ãã»ãã®ä¾ããè¥å¹²å¤§ããªãµã¤ãºã§ãã 150 x 200 ãã¯ã»ã«ã®ãã£ã³ãã¹ãå¿ è¦ã§ãã
<html lang="en">
<body>
<canvas id="canvas" width="150" height="200"></canvas>
</body>
</html>
function draw() {
const canvas = document.getElementById("canvas");
if (canvas.getContext) {
const ctx = canvas.getContext("2d");
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 3; j++) {
ctx.beginPath();
const x = 25 + j * 50; // x 座æ¨
const y = 25 + i * 50; // y 座æ¨
const radius = 20; // åå¼§ã®åå¾
const startAngle = 0; // åå¤ã®å§ç¹
const endAngle = Math.PI + (Math.PI * j) / 2; // åå¤ã®çµç¹
const counterclockwise = i % 2 !== 0; // æè¨åãã¾ãã¯åæè¨åã
ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);
if (i > 1) {
ctx.fill();
} else {
ctx.stroke();
}
}
}
}
}
ãã¸ã§ã¨äºæ¬¡æ²ç·
次ã«è¦ã¦ãã種é¡ã®ãã¹ã¯ãã¸ã§æ²ç·ã§ãã䏿¬¡é¢æ°ã¨äºæ¬¡é¢æ°ãå©ç¨å¯è½ã§ããä¸è¬ã«ãè¤éãªèªç¶ã®å³å½¢ãæãã®ã«ä½¿ããã¾ãã
quadraticCurveTo(cp1x, cp1y, x, y)
ç¾å¨ã®ãã³ã®ä½ç½®ãã x
ããã³ y
ã§æå®ããçµç«¯ã¸ã cp1x
ããã³ cp1y
ã§æå®ããå¶å¾¡ç¹ã使ç¨ãã¦äºæ¬¡ãã¸ã§æ²ç·ãæãã¾ãã
bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
ç¾å¨ã®ãã³ã®ä½ç½®ãã x
ããã³ y
ã§æå®ããçµç«¯ã¸ã(cp1x
, cp1y
) ããã³ (cp2x
, cp2y
) ã§æå®ããå¶å¾¡ç¹ã使ç¨ãã¦ä¸æ¬¡ãã¸ã§æ²ç·ãæãã¾ãã
ãããã®éãã¯å³ã®ç»åã使ããã¨ã§èª¬æãããã¨ãã§ãã¾ããäºæ¬¡ãã¸ã§æ²ç·ã¯å§ç¹ã¨çµç¹ï¼éãç¹ï¼ã¨ 1 ã¤ã®å¶å¾¡ç¹ï¼èµ¤ãç¹ã§ç¤ºãããã®ï¼ãæã¤ã®ã«å¯¾ãã¦ã䏿¬¡ãã¸ã§æ²ç·ã¯ 2 ã¤ã®å¶å¾¡ç¹ãæã¡ã¾ãã
ãããã®ã¡ã½ããã®ä¸¡æ¹ã® x
㨠y
弿°ã¯çµç¹ã®åº§æ¨ã§ããcp1x
㨠cp1y
ã¯æåã®å¶å¾¡ç¹ãcp2x
㨠cp2y
㯠2 çªç®ã®å¶å¾¡ç¹ã®åº§æ¨ã§ãã
äºæ¬¡ã»ä¸æ¬¡ãã¸ã§æ²ç·ã¯ã Adobe Illustrator ã®ãããªãã¯ãã«æç»ã½ããã¨ã¯ç°ãªããä½ããã¦ããã®ããç´æ¥è¦è¦çã«ããããªããããããªãé£æåº¦ãé«ãã§ãããã®ãããè¤éãªå½¢ç¶ãæãã®ã¯ããªãé£ããã§ããæ¬¡ã®ä¾ã§ã¯ãåç´ãªææ©çãªå½¢ç¶ãããã¤ãæãã¾ãããæéã¨å¿èåãããã°ããã£ã¨è¤éãªå½¢ç¶ã使ãããã¨ãå¯è½ã§ãã
ãããã®ä¾ã§é常ã«é£ãããã®ã¯ä½ãããã¾ããã ã©ã¡ãã®å ´åããæçµçã«æãããä¸é£ã®æ²ç·ãå®å ¨ãªå³å½¢ã¨ãªãã®ãè¦ããã¨ã«ãªãã¾ãã
äºæ¬¡ãã¸ã§æ²ç·ãã®ä¾ã§ã¯ãå¹ãåºããã¬ã³ããªã³ã°ããããã«è¤æ°ã®äºæ¬¡ãã¸ã§æ²ç·ã使ç¨ãã¦ãã¾ãã
<html lang="en">
<body>
<canvas id="canvas" width="150" height="150"></canvas>
</body>
</html>
function draw() {
const canvas = document.getElementById("canvas");
if (canvas.getContext) {
const ctx = canvas.getContext("2d");
// äºæ¬¡æ²ç·ã®ä¾
ctx.beginPath();
ctx.moveTo(75, 25);
ctx.quadraticCurveTo(25, 25, 25, 62.5);
ctx.quadraticCurveTo(25, 100, 50, 100);
ctx.quadraticCurveTo(50, 120, 30, 125);
ctx.quadraticCurveTo(60, 120, 65, 100);
ctx.quadraticCurveTo(125, 100, 125, 62.5);
ctx.quadraticCurveTo(125, 25, 75, 25);
ctx.stroke();
}
}
䏿¬¡ãã¸ã§æ²ç·
ãã®ä¾ã§ã¯ã䏿¬¡ãã¸ã§æ²ç·ã使ã£ã¦ãã¼ããæç»ãã¾ãã
<html lang="en">
<body>
<canvas id="canvas" width="150" height="150"></canvas>
</body>
</html>
function draw() {
const canvas = document.getElementById("canvas");
if (canvas.getContext) {
const ctx = canvas.getContext("2d");
// 䏿¬¡ãã¸ã§æ²ç·ã®ä¾
ctx.beginPath();
ctx.moveTo(75, 40);
ctx.bezierCurveTo(75, 37, 70, 25, 50, 25);
ctx.bezierCurveTo(20, 25, 20, 62.5, 20, 62.5);
ctx.bezierCurveTo(20, 80, 40, 102, 75, 120);
ctx.bezierCurveTo(110, 102, 130, 80, 130, 62.5);
ctx.bezierCurveTo(130, 62.5, 130, 25, 100, 25);
ctx.bezierCurveTo(85, 25, 75, 37, 75, 40);
ctx.fill();
}
}
é·æ¹å½¢
é·æ¹å½¢ã®æç»ã§è¦ãããã£ã³ãã¹ã«ç´æ¥é·æ¹å½¢ãæã 3㤠ã®ã¡ã½ããã«å ããç¾å¨éãã¦ãããã¹ã«é·æ¹å½¢ã®ãã¹ã追å ãã rect()
ã¡ã½ãããç¨æããã¦ãã¾ãã
rect(x, y, width, height)
(x
, y
) ã§æå®ããä½ç½®ãå·¦ä¸ã®è§ã«ãã¦ã width
ããã³ height
ã§æå®ããå¹
ããã³é«ãã®é·æ¹å½¢ãæãã¾ãã
ãã®ã¡ã½ãããå®è¡ãããåã«ã弿°ã« (x,y) ãæã£ã moveTo()
ã¡ã½ãããèªåçã«å¼ã°ãã¾ããããªãã¡ãå§ç¹ãæ¨æºã®ä½ç½®ã«ç½®ããã¾ãã
ãã®ãã¼ã¸ã®ãã¹ã¦ã®ä¾ã§å³å½¢ã«ã¤ãä¸ç¨®é¡ã®ãã¹é¢æ°ã®ã¿ã使ã£ã¦ãã¾ãããããããå³å½¢ãä½ãã®ã«ä½¿ç¨ã§ãããã¹ã®ç¨®é¡ã®å¶éã¯ä¸åããã¾ãããããã§ããã®æå¾ã®ä¾ã§ã¯éå¸¸ã«æåãªã²ã¼ã ã®ãã£ã©ã¯ã¿ã¼ãä½ãããã«ãå ¨ã¦ã®ãã¹é¢æ°ãçµã¿åããã¦ã¿ã¾ãããã
<html lang="en">
<body>
<canvas id="canvas" width="200" height="185"></canvas>
</body>
</html>
function draw() {
const canvas = document.getElementById("canvas");
if (canvas.getContext) {
const ctx = canvas.getContext("2d");
roundedRect(ctx, 12, 12, 184, 168, 15);
roundedRect(ctx, 19, 19, 170, 154, 9);
roundedRect(ctx, 53, 53, 49, 33, 10);
roundedRect(ctx, 53, 119, 49, 16, 6);
roundedRect(ctx, 135, 53, 49, 33, 10);
roundedRect(ctx, 135, 119, 25, 49, 10);
ctx.beginPath();
ctx.arc(37, 37, 13, Math.PI / 7, -Math.PI / 7, false);
ctx.lineTo(31, 37);
ctx.fill();
for (let i = 0; i < 8; i++) {
ctx.fillRect(51 + i * 16, 35, 4, 4);
}
for (let i = 0; i < 6; i++) {
ctx.fillRect(115, 51 + i * 16, 4, 4);
}
for (let i = 0; i < 8; i++) {
ctx.fillRect(51 + i * 16, 99, 4, 4);
}
ctx.beginPath();
ctx.moveTo(83, 116);
ctx.lineTo(83, 102);
ctx.bezierCurveTo(83, 94, 89, 88, 97, 88);
ctx.bezierCurveTo(105, 88, 111, 94, 111, 102);
ctx.lineTo(111, 116);
ctx.lineTo(106.333, 111.333);
ctx.lineTo(101.666, 116);
ctx.lineTo(97, 111.333);
ctx.lineTo(92.333, 116);
ctx.lineTo(87.666, 111.333);
ctx.lineTo(83, 116);
ctx.fill();
ctx.fillStyle = "white";
ctx.beginPath();
ctx.moveTo(91, 96);
ctx.bezierCurveTo(88, 96, 87, 99, 87, 101);
ctx.bezierCurveTo(87, 103, 88, 106, 91, 106);
ctx.bezierCurveTo(94, 106, 95, 103, 95, 101);
ctx.bezierCurveTo(95, 99, 94, 96, 91, 96);
ctx.moveTo(103, 96);
ctx.bezierCurveTo(100, 96, 99, 99, 99, 101);
ctx.bezierCurveTo(99, 103, 100, 106, 103, 106);
ctx.bezierCurveTo(106, 106, 107, 103, 107, 101);
ctx.bezierCurveTo(107, 99, 106, 96, 103, 96);
ctx.fill();
ctx.fillStyle = "black";
ctx.beginPath();
ctx.arc(101, 102, 2, 0, Math.PI * 2, true);
ctx.fill();
ctx.beginPath();
ctx.arc(89, 102, 2, 0, Math.PI * 2, true);
ctx.fill();
}
}
// è§ä¸¸ã®åè§å½¢ãæç»ããããã®ã¦ã¼ãã£ãªãã£é¢æ°
function roundedRect(ctx, x, y, width, height, radius) {
ctx.beginPath();
ctx.moveTo(x, y + radius);
ctx.arcTo(x, y + height, x + radius, y + height, radius);
ctx.arcTo(x + width, y + height, x + width, y + height - radius, radius);
ctx.arcTo(x + width, y, x + width - radius, y, radius);
ctx.arcTo(x, y, x, y + radius, radius);
ctx.stroke();
}
以ä¸ã®æ§ãªè¡¨ç¤ºçµæã¨ãªãã¾ãã
å®éã«ã¯é©ãã»ã©ç°¡åãªã®ã§ãããã§ã¯è©³ãã説æãã¾ãããæãéè¦ãªãã¨ã¯ãæç»ã³ã³ããã¹ãã§ fillStyle
ããããã£ã使ç¨ãããã¨ã¨ãã¦ã¼ãã£ãªãã£é¢æ°ï¼ãã®å ´å㯠roundedRect()
ï¼ã使ç¨ãããã¨ã§ããã¦ã¼ãã£ãªãã£é¢æ°ã使ç¨ããã¨ãå¿
è¦ãªã³ã¼ãã®éãè¤éããæ¸ãããã¨ãã§ããã¨ã¦ã便å©ã§ãã
ãã®ãã¥ã¼ããªã¢ã«ã®å¾åã§ã fillStyle
ã«ã¤ãã¦ããã詳ããè¦ã¦ããã¾ããããã§ã¯ããã¹ã®å¡ãã¤ã¶ãè²ãæ¢å®ã®é»ããç½ã«å¤æ´ããã¾ãå
ã«æ»ãããã«ä½¿ç¨ãã¦ããã ãã§ãã
ç©´ã®ãããå³å½¢ãæç»ããã«ã¯ãå¤å´ã®å³å½¢ãæç»ããã¨ãã¨åãããã«ãç°ãªãæè¨åãã«ç©´ãæç»ããå¿ è¦ãããã¾ããå¤å´ã®å³å½¢ãæè¨åãã«ãå å´ã®å³å½¢ãåæè¨åãã«æç»ããããå¤å´ã®å³å½¢ãåæè¨åãã«ãå å´ã®å³å½¢ãæè¨åãã«æç»ãã¾ãã
<html lang="en">
<body>
<canvas id="canvas" width="150" height="150"></canvas>
</body>
</html>
function draw() {
const canvas = document.getElementById("canvas");
if (canvas.getContext) {
const ctx = canvas.getContext("2d");
ctx.beginPath();
// å¤å´ã®å³å½¢ãæè¨åãã« â³
ctx.moveTo(0, 0);
ctx.lineTo(150, 0);
ctx.lineTo(75, 129.9);
// å
å´ã®å³å½¢ãåæè¨åãã« âº
ctx.moveTo(75, 20);
ctx.lineTo(50, 60);
ctx.lineTo(100, 60);
ctx.fill();
}
}
ä¸ã®ä¾ã§ã¯ãå¤å´ã®ä¸è§å½¢ã¯æè¨åãï¼å·¦ä¸é ã«ç§»åããæ¬¡ã«å³ä¸é ã¾ã§ç·ãæããä¸çªä¸ã§å®äºï¼ãå å´ã®ä¸è§å½¢ã¯åæè¨åãï¼ä¸çªä¸ã«ç§»åããæ¬¡ã«å·¦ä¸é ã«ç·ãæããããã¦å³ä¸ã§å®äºï¼ã
Path2D ãªãã¸ã§ã¯ãæå¾ã®ä¾ã§è¦ãããã«ããªãã¸ã§ã¯ããæãããã®ä¸é£ã®ãã¹ãæç»ã³ãã³ãããã£ã³ãã¹ã«ç½®ããã¨ãã§ãã¾ããã³ã¼ããã·ã³ãã«ã«ãã¦ããã©ã¼ãã³ã¹ãåä¸ãããããã«æè¿ã®çã®ãã©ã¦ã¶ã¼ã§ä½¿ç¨ã§ãã Path2D
ãªãã¸ã§ã¯ãã¯ãæç»ã³ãã³ãããã£ãã·ã¥ãããã¯è¨é²ãããã¨ãå¯è½ã«ãã¦ãã¾ããããã«ããããã¹ããã°ããåå®è¡ã§ãã¾ãã Path2D
ãªãã¸ã§ã¯ãã®æ§ç¯æ¹æ³ãè¦ã¦ããã¾ãããã
Path2D()
Path2D()
ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ãæ°ãã«ã¤ã³ã¹ã¿ã³ã¹åãã Path2D
ãªãã¸ã§ã¯ããè¿ãã¾ããä»»æã§å¼æ°ã¨ãã¦å¥ã®ãã¹ãããã㯠SVG ãã¹ãã¼ã¿ãæ§æããæååãæå®ã§ãã¾ãï¼ã³ãã¼ã使ï¼ã
new Path2D(); // 空ã®ãã¹ãªãã¸ã§ã¯ãã使ãã
new Path2D(path); // å¥ã® Path2D ãªãã¸ã§ã¯ããè¤è£½ãã
new Path2D(d); // SVG ãã¹ãã¼ã¿ãããã¹ã使ãã
ããã¾ã§è¦ã¦ãããã¹ã¦ã®ãã¹ã¡ã½ãããmoveTo
ãrect
ãarc
ãquadraticCurveTo
ãªã©ãã Path2D
ãªãã¸ã§ã¯ãã§ä½¿ç¨ãããã¨ãã§ãã¾ãã
ã¾ã Path2D
API ã«ã¯ããã¹ãçµåããããã® addPath
ã¡ã½ããã追å ããã¦ãã¾ããããã¯ãè¤æ°ã®é¨åãçµã¿åããã¦ãªãã¸ã§ã¯ããæ§ç¯ãããå ´åãªã©ã«å½¹ç«ã¡ã¾ãã
Path2D.addPath(path [, transform])
ç¾å¨ã®ãã¹ã«ã夿è¡åï¼ä»»ææå®ï¼ã¨ã¨ãã«ããã¹ã追å ãã¾ãã
ãã®ä¾ã§ã¯ãé·æ¹å½¢ã¨åã使ãã¾ããã©ã¡ãã Path2D
ãªãã¸ã§ã¯ãã¨ãã¦ä¿åãã¦ãããå¾ã§ä½¿ç¨ãããã¨ãã§ãã¾ããæ°ã㪠Path2D
API ã«åããã¦ãããã¤ãã®ã¡ã½ãããç¾å¨ã®ãã¹ã«ä»£ããä»»æã§ Path2D
ãåãå
¥ããããããã«æ´æ°ããã¾ãããããã§ã¯ããã£ã³ãã¹ã«ä¸¡æ¹ã®ãªãã¸ã§ã¯ããæãããã 1 ã¤ã® path 弿°ã stroke
ããã³ fill
ã§ä½¿ç¨ãã¦ãã¾ãã
<html lang="en">
<body>
<canvas id="canvas" width="130" height="100"></canvas>
</body>
</html>
function draw() {
const canvas = document.getElementById("canvas");
if (canvas.getContext) {
const ctx = canvas.getContext("2d");
const rectangle = new Path2D();
rectangle.rect(10, 10, 50, 50);
const circle = new Path2D();
circle.arc(100, 35, 25, 0, 2 * Math.PI);
ctx.stroke(rectangle);
ctx.fill(circle);
}
}
SVG ãã¹ã®ä½¿ç¨
ãã£ã³ãã¹ã®æ°ã㪠Path2D
API ã®ãããã²ã¨ã¤ã®å¼·åãªæ©è½ãã SVG ãã¹ãã¼ã¿ã使ç¨ãã¦ãã£ã³ãã¹ã®ãã¹ãåæåãã§ãããã¨ã§ããããã«ããããã¹ãã¼ã¿ã SVG ãã£ã³ãã¹ã®ä¸¡æ¹ã§ä½¿ãåããã¨ãã§ããããã«ãªãã¾ãã
ãã®ãã¹ã¯ããç¹ã«ç§»åã㦠(M10 10
) ãããããå³ã¸æ°´å¹³ã« 80 ãã¤ã³ãç§»å (h 80
)ãä¸ã¸ 80 ãã¤ã³ãç§»å (v 80
) ã 80 ãã¤ã³ã å·¦ã¸ç§»å (h -80
) ãããã¦å§ç¹ã¸æ»ãã¾ã (z
)ããã®ä¾ã¯ Path2D
ã³ã³ã¹ãã©ã¯ã¿ã¼ã®ãã¼ã¸ã§ç¢ºèªã§ãã¾ãã
const p = new Path2D("M10 10 h 80 v 80 h -80 Z");
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4