@wywm@z[y[W
@ | @wywm@ | @ |
@ | |JavaScript̐}``|@ | @ |
ŏIXVF2025N15
@JavaScript̐}``֘AɂĐ܂B
@HTMLł́AimageurlƂURLɒuĂ摜\ꍇA<img>^OpāA
<img src="imageurl">
Ƃ邱ƂɂA摜̕\s܂BƓƂImageIuWFNgpJavaScriptōsƂł܂B܂AImageNXconstructorp
img1 = new Image();
ƂC[WEIuWFNgimg1쐬Aimg1srcvpeBɉ摜̈ʒuw肵ĂA
img1.src = "imageurl";
ɁAimg1ebody^O̎qƂDOMc[ɂȂׂA
document.body.appendChild(img1);
Ƃ邱ƂɂA摜\邱Ƃł܂BsrcvpeBɂ́Aq܂ALoXEIuWFNgcanvas1pāAAj̃LN^XvCgƂĉ摜Aȉ̂悤stylevpeBleftCtopɁA
img1.style.left = "227px";
img1.style.top = "179px";
ƕ\ʒuݒAtoDataURL\bhpāA
img1.src = canvas1.toDataURL();
Ƃcanvas1URLimg1srcvpeBɐݒ肵ALoXEIuWFNgɕ`LN^wʒuɕ\ł܂BtopCleft̒lςčsẢ摜\邱Ƃł܂BȉAImageIuWFNgALoXEIuWFNgɂĐ܂B
Imagevfconstructor
new Image()
Imagevf܂B
Imagevf̃vpeB
ImageElement.alt
@摜ǂݍ܂ȂƂɕ\֕w肵܂B
ImageElement.src
@摜ʒuURLw肵܂B
ImageElement.width
@摜\镝w肵܂B
ImageElement.height
@摜\鍂w肵܂B
LoXEIuWFNg
@JavaScript̃LoX@\gƁAʂɐ}``sƂł܂BmɌƁAcanvas̓uEUɑgݍ܂Ă@\ŁAJavaScript͂LoXEIuWFNgƂėp\ɂ铭Ă܂B
ȉł́AHTMLLq̒(widthCheight̒l͂ł悢ł)
<canvas class="cv1" width="800" height="800">canvas@\ȂuEUł̑֕</canvas>
ƂƂ܂BJavaScript̋Lq̒
canvas = querySelector(".cv1");
ƂāALoXvf擾A
ctx = canvas.getContext("2d");
ƂāA2I`ReLXgctx擾ƂzŐ܂B܂AWw肵ĕ`悷Ƃ̍WłAHTMLLq̒LoXvfzuʒuW(0, 0)ƂāAʉEpxPʂxWAʉpxPʂyWƂ܂B
LoXvfCanvasElement\bh
CanvasElement.getContext(type)
@type"2d"̏ꍇɂ2I`ReLXgԂ܂Btype"webgl"C"webgl2"C"webgpu"̏ꍇ3I`ReLXgԂ܂(ǂw肷邩̓uEUɂĈقȂ܂)B
CanvasElement.toDataURL(type)
@canvasɕ\Ă摜ۑURL(ۂɂbase64`ƌĂ镶)܂Btypeɂ́A"image/jpeg"܂"image/png"w肵܂(image/pngftHgAuEUɂđΉ`قȂ܂)Bȉ̂悤ɁAImagevfAsrcvpeBcanvas1URLw肷ƁAʂcanvas2(ReLXgctxƂ܂)̒canvas1ō쐬ꂽ摜\邱Ƃł܂B
img1 = new Image();
img1.src = canvas1.toDataURL();
ctx.drawImage(img1, 50, 50);
LoXvfCanvasElement̃vpeB
@ImagevfƓlɁAwidthCheightƂvpeB܂B
2I`ReLXgctx\bĥ\IȂ͈̂ȉ̒ʂłB
clearRect
@`̈FœhԂ`悳Ă}`܂B
ctx.clearRect(x, y, width, height);
(x, y)n_ƂāAwidthCheight̋`̈܂B
fillRect
@``܂B`hԂ܂B
ctx.fillText(x, y, width, height);
(x, y)n_ƂāAwidthCheight̋`̈Actx.fillStylevpeBŎw肵@(hԂFȂǂw)ŁAhԂ܂B
strokeRect
@`g`܂B
ctx.strokeRect(x, y, width, height);
(x, y)n_ƂāAwidthCheight̋`̘gActx.strokeStylevpeBŎw肵@(g̐FȂǂw)Actx.lineWidthŎw肷Actx.lineJoinŎw肷ڍ`ŕ\܂B
beginPath
@VpX̍쐬n߂܂B̃pX͎̂Ă܂B
ctx.beginPath();
̌ɁApXĂ܂B
moveTo
@pX̋N_w肵܂B
ctx.moveTo(x, y);
(x, y)pX̋N_Ƃ܂B
lineTo
@݂̃pẌʒuw肵_ւ̃pX܂B
ctx.lineTo(x, y);
moveTo\bhlineTo\bhŎw肳Ă_(x, y)ԃpX܂B̎_Ő`悳̂ł͂ȂAstroke()\bhCfill()\bhŕ`悳܂B
closePath
@pX̐擪ƖԃpXA}`ƂȂpX܂B
ctx.closePath();
rect
@`ƂȂpX܂B
ctx.rect(x, y, width, height);
(x, y)n_ƂāAwidthCheight̋`̃pX܂B
arc
@~A~ʂƂȂpX܂B
ctx.arc(x, y, r, sangle, eangle, clockwise);
(x, y)𒆐SƂ锼ar̉~ʂ`܂BclockwiséAJn_玞v(false)Av(true)w肵܂Bsangle͉~ʂ̊Jn_Aeangle͉~ʂ̏I_AWAPʂ̓åpxŎw肵܂B~πJavaScriptł́AMath.PIƂČĂяoƂł܂B~`ꍇ́Asangle0Ceangle2*Math.PIƂ܂BpX̐擪ł͂ȂꍇApX̖Ɖ~ʂ̊Jn_ԃpX܂B
arcTo
@pX̖ƒŐڑ~ʂ܂B
ctx.arcTo(x1, y1, x2, y2, r);
pX̖(x1, y1)Ԓ̂ApX̖Ɣar̉~CƂ̐ړ_P܂ł̃pXA(x1, y1)(x2, y2)Ԓ̂Aar̉~CƂ̐ړ_Q(x2, y2)܂ł̃pXAPJn_AQI_Ƃ锼ar̉~ʂpXɉ܂BAAweɂẮA~ʂ쐬Ȃꍇ܂B
fillText
@`悵܂B
ctx.fillText(string, x, y);
ctx.fillStyleŎw肷FActx.fontŎw肷镶tHgActx.textAlignctx.textBaseLineŎw肳镶zuɏ]āAstring\܂B
strokeText
@𒆔\܂B
ctx,strokeText(string, x, y);
ctx.strokeStyleŎw肷FActx.fontŎw肷镶tHgActx.textAlignctx.textBaseLineŎw肳镶zuɏ]āAstring𒆔ŕ\܂B
fill
@݂̃pX̏I_Ǝn_сActx.fillStyleŎw肵@(hԂFȂǂw)AhԂ܂B
ctx.fill();
stroke
@݂̃pX̏I_Ǝn_сActx.strokeStyleŎw肵@(g̐FȂǂw)ŁActx.lineWidthŎw肷Actx.lineJoinŎw肷ڍ`ŁA\܂B
ctx.stroke();
drawImage
@imageŎw肳摜Awʒuɕ\܂B
ctx.drawImage(image, x, y);
imageɂ́AImageCX^Xw肵܂BimageIuWFNgsrcvpeBŁAOō쐬ꂽ摜Aʂcanvasō쐬ꂽ摜ݒ\łB
quadraticCurveTo
@݂̃pX̏I_Ǝw_ԋȐ̃pX쐬܂
ctx.quadraticCurveTo(cpx, cpy, x, y);
pX̖(cpx, cpy)ԒƁA(cpx, cpy)(x, y)Ԓ2ڐƂȐ̃pX܂B
clip
@݂̃pXŃLoXʂA̒Ō㑱̐}`\܂B̃\bhɂẮAu[][vƂ蔲[KpAƂ̂ƂŁAlbgĂ݂ĂB
scale
@}`Lk܂B
ctx.scale(xe, ye);
scales̐}``́Axxe{Ayye{Ċg\܂Bw肷Ɣ]܂B
rotate
@}`]܂B
ctx.rotate(angle);
rotates̐}``́A(0, 0)𒆐SɎvangleWA]ĕ\܂Bϊ_ς邽߂ɂ́Atranslate\bhg܂B
translate
@}``̌_ړ܂B
ctx.taranlate(xd, yd);
translates̐}``́A_(0, 0)(xd, yd)Ɉړ̂悤ɍs܂B܂AW(x, y)w肷ƁA(x+xd, y+yd)w肵̂悤ɕ\s܂B
createImageData
@ImageDataIuWFNg܂B
ctx.createImageData(width, height);
@widthCheightImageDataIuWFNgAImageDataIuWFNgԂ܂Bwidth*heightsNZ琬ImageDataIuWFNg͔z\ĂAlength(ImageData.data.lengthƂĎ擾ł܂)́Awidth*height*4ł(lengthoCg̃f[^Ă܂)B܂1sNZɂ4oCg̃f[^ĂzImageData.data[n]ƂāAn4Ŋ鐔̂Ƃ(R)An4Ŋ1]Ƃ(G)An4Ŋ2]Ƃ(B)A4Ŋ3]Ƃx(傫ȂقǕs)\܂Brbg}bvʼn摜`ꍇɎg܂BputImageData\bh̎sɂʂɕ\܂B
getImageData
@LoX摜f[^擾܂B
ctx.getImageData(x, y, width, height);
LoXɕ`悳Ă摜̂A(x, y)n_ƂAwidthCheight̋`̈oImageDataIuWFNg܂B
putImageData
@ImageDataIuWFNg̃f[^LoXɕ`悵܂B
ctx.putImageData(imagedata, x, y);
ImageDataIuWFNgimagedataLoXɁA(x, y)n_Ƃĕ`悵܂B
save
@̕`X^bNɑޔ܂B
ctx.save();
ꎞIɃLoX̏ύXA܂gAƂƂɁAꎞIɁApXAFAhԂFAAȂǂ̏save\bhŃX^bNɑޔAƂrestore\bhɂ蕜A邱Ƃł܂B
restore
@X^bNɑޔĂLoX̏܂B
ctx.restore()
2I`ReLXgctx̃vpeBɂ͈ȉ̂̂܂B
ctx.strokeStyle
@֊s̐F擾Aݒ肵܂BFw肷ꍇ́Actx.strokeStyle = "#8f74b3";̂悤RGB̒l16iŎw肷邩Actx.strokeStyle = "rgba(125, 79, 202, 127)";(ԗΐ̔ZxAx)C邢͕WF\ctx.strokeStyle = "palegreen";̂悤Ɏw肵܂B
ctx.fillStyle
@strokestylevpeBƓlɂāA}`̓hԂF擾Aݒ肵܂BcreateLinearGradient()\bhCcreateConicGradient()\bhpɂOf[VAcreatePattern()\bhpɂp^[̐ݒs܂BFẃAstrokeStyle̐ݒƓlłB
ctx.lineWidth
@pxPʂŎw肵܂B͒SL悤ɕ`悳܂B
ctx.lineCap
@̒[_`擾Aݒ肵܂B"butt"([_Őꂽ`ɂȂ܂)C"round"(ۂ݂тт`ł)C"square"([_𒆐SƂA1ӂ̒Ƃlp`ɂȂ܂)3ʂ肪ݒ\łB
ctx.lineJoin
@̐܂Ȃ`擾Aݒ肵܂B"bevel"(pꂽ`)C"round"(ۂ݂тт`)C"miter"(p`)3ʂ肪\łB
ctx.miterLimit
@ctx.lineJoin"miter"łƂAp܂ɉsƐȂ肷̂ŁA܂Ȃ̓Ɛ̐[̋̌El𐔒lŐݒ肵܂BElꍇA"bevel"̂悤Ȍ`ɂȂ܂B
ctx.font
@\Ƃ̃tHg擾Aݒ肵܂BCSS̃tHg̃X^CLqŎw肷font-styleCfont-familyCfont-sizeCfont-weightŋƂĎw肵܂BftHǵA"10px sans-serif"łBC^bNArialtHg24pxTCYŕ\ꍇA
ctx.font = "italic bold Arial 24px";
Ɛݒ肵܂BF́AfillStylevpeBAstrokeStylevpeBŐݒ肵܂B̕`́AfillText\bhAstrokeText\bhōs܂B
ctx.textAlign
@̕zu擾Aݒ肵܂B"left"(l)A"center"()A"right"(El)3ʂ肪\łB
ctx.textBaseline
@c̕zu擾Aݒ肵܂B"top"([ɑ܂)C"middle"(ɑ܂)C"bottom"(ӂɑ܂)C"alphabetic"(At@xbg\ő܂)Cideographic(ł͂g܂)w\łBftHǵA"alphabetic"łB
ctx.shadowColor
@e̐Frgba(ԗΐ̔ZxAx)Ŏw肵܂B
ctx.globalAlpha
@`悷}`̓x0 ()`1.0 (s)̐lŁA擾Aݒ肵܂B
yLz@LłB̊F܂̂x肽A낵肢܂B
yLz@L͂܂łłB