Canvas繪制矩形&圓形&圖片

1.方式一:先設(shè)置 rect, 再設(shè)置樣式
2.方式二:先設(shè)置樣式, 再設(shè)置strokeRect,fillRect

1. 快速創(chuàng)建矩形rect()方法

  • 語法:ctx.rect(x, y, width, height);
  • 解釋:x, y是矩形左上角坐標(biāo), width和height都是以像素計(jì)
  • rect方法只是規(guī)劃了矩形的路徑,并沒有填充和描邊。
  • 改造案例:04填充矩形.html
  • rect: abbr. 矩形(rectangular);收據(jù)(receipt)

2. 快速創(chuàng)建描邊矩形和填充矩形

  • 語法: ctx.strokeRect(x, y, width, height);
  • 參數(shù)跟ctx.rect相同,注意此方法繪制完路徑后立即進(jìn)行stroke繪制
  • 語法:ctx.fillRect(x, y, width, height);
  • 參數(shù)跟ctx.rect相同, 此方法執(zhí)行完成后。立即對(duì)當(dāng)前矩形進(jìn)行fill填充。

3. 清除矩形(clearRect)

  • 語法:ctx.clearRect(x, y, width, hegiht);
  • 解釋:清除某個(gè)矩形內(nèi)的繪制的內(nèi)容,相當(dāng)于橡皮擦。

繪制圓形(arc)

  • 概述:arc() 方法創(chuàng)建弧/曲線(用于創(chuàng)建圓或部分圓)。
  • 語法:ctx.arc(x,y,r,sAngle,eAngle,counterclockwise);
  • arc: ?。ǘ龋┗⌒挝?;天穹 英 [ɑ?k] 美 [ɑrk]
  • counter 反擊,還擊;反向移動(dòng),對(duì)著干;反駁,回答 ['ka?nt?] 美 ['ka?nt?]
  • 解釋:
  • x,y:圓心坐標(biāo)。
  • r:半徑大小。
  • sAngle:繪制開始的角度。 圓心到最右邊點(diǎn)是0度,順時(shí)針方向弧度增大。
  • eAngel:結(jié)束的角度,注意是弧度。π
  • counterclockwise:是否是逆時(shí)針。true是逆時(shí)針,false:順時(shí)針(默認(rèn))
  • 弧度和角度的轉(zhuǎn)換公式: rad = deg*Math.PI/180;
  • 在Math提供的方法中sin、cos等都使用的弧度
image.png
  • 三角函數(shù)的補(bǔ)充

  • Math.sin(弧度); //夾角對(duì)面的邊 和 斜邊的比值

  • Math.cos(弧度); //夾角側(cè)邊 與斜邊的比值

  • 圓形上面的點(diǎn)的坐標(biāo)的計(jì)算公式

  • x =x0 + Math.cos(rad) * R;//x0和y0是圓心點(diǎn)坐標(biāo)

  • y =y0 + Math.sin(rad) * R;//注意都是弧度


    image.png

繪制圖片(drawImage) (重點(diǎn))

1 基本繪制圖片的方式

  • context.drawImage(img,x,y);
  • 參數(shù)說明: x,y 繪制圖片左上角的坐標(biāo),在畫布上繪制的坐標(biāo)點(diǎn) img是繪制圖片的dom對(duì)象。

2 在畫布上繪制圖像,并規(guī)定圖像的寬度和高度

  • context.drawImage(img,x,y,width,height);
  • 參數(shù)說明:width 繪制圖片的寬度, height:繪制圖片的高度
  • 如果指定寬高,最好成比例,不然圖片會(huì)被拉伸
  • 等比公式: toH = Height * toW / Width;
  • 設(shè)置的高度 = 原高度 * 設(shè)置的寬度 / 原寬度;

3 圖片裁剪,并在畫布上定位被剪切的部分

  • context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);
  • 參數(shù)說明:
    • sx,sy 裁剪的左上角坐標(biāo),
    • swidth:裁剪圖片的高度。
    • sheight:裁剪的高度
    • 其他同上

4 用JavaScript創(chuàng)建img對(duì)象

  • 第一種方式:
var img = document.getElementById("imgId");

  • 第二種方式:
var img = new Image();//這個(gè)就是 img標(biāo)簽的dom對(duì)象
img.src = "imgs/arc.gif";
img.alt = "文本信息";
img.onload = function() {
//圖片加載完成后,執(zhí)行此方法

示意圖:

  • 原圖片:
ctx.drawImage(img, 100, 100, 300, 216);

  • 截取圖片:
裁剪的位置: sx,sy,swidth,sheight : 50 50 120 120
sx,sy,swidth,sheight 相對(duì)于原圖片的裁剪區(qū)域

放置位置:x,y,width,height : 350, 100, 120, 120
x, y ,width, height 相對(duì)于畫布的顯示區(qū)域
ctx.drawImage(img, 50, 50, 120, 120, 450, 100, 120, 120);

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容