Today I Learned #22
paintJS図形描画機能の実現
これまで行われてきたpaintJSではcanvasが実現され,各色に対応したbuttonとブラシ厚さのrangeが実現されているが,canvas自体の描画機能やbuttonとrangeを介して値を伝達する機能はまだ実現されていない.そこで、まずcanvasで絵を描く機能を実現しましょう.
宣言と設定
MDNコンテキストドキュメントを参照して、canvasのコンテキストを設定します.
const ctx = canvas.getContext("2d");
ctx.strokeStyle = "#2c2c2c";
ctx.lineWidth = 2.5;
canvas.width = 500 ;
canvas.height = 500;
また、色はstrokeStyle
により決定され、ペンの厚さを示すlineWidth
の初期値は2.5と宣言され、html <canvas>
の大きさと同じ大きさにするため、canvas.width
とcanvas.height
の値はそれぞれ500と指定されている.onMouseMove
startPainting
およびstopPainting
関数により、let
の値が宣言されたときはpainting
、終了時はtrue
であり、対応するfalse
の値に従って関数が実行される.function onMouseMove(event) {
const x = event.offsetX;
const y = event.offsetY;
if(!painting) {
ctx.beginPath();
ctx.moveTo(x,y);
} else {
ctx.lineTo(x,y);
ctx.stroke();
}
}
まず、painting
が発生した場合、"mousemove"
の値がpainting
である場合、false
のpathは、マウスが存在するx,yから始まると宣言される.この過程で、ユーザのマウスがキャンバス上を移動するとmousedown(クリック)が発生し、context
はpainting
に変換され、前のx,yで生成されたtrue
から、pathはbeginPath()
で移動するx,yに接続される.lineTo(x,y)
関数により、stroke()
が生成されるたびに、pathは"mousemove"
の色とstrokeStyle
の値の厚さに着色される.実行結果
Reference
この問題について(Today I Learned #22), 我々は、より多くの情報をここで見つけました https://velog.io/@loopbackseal/Today-I-Learned-22テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol