Canvas绘制矩形&圆形&图片

1.方式一:先设置 rect, 再设置样式
2.方式二:先设置样式, 再设置strokeRect,fillRect

1. 快速创建矩形rect()方法

  • 语法:ctx.rect(x, y, width, height);
  • 解释:x, y是矩形左上角坐标, width和height都是以像素计
  • rect方法只是规划了矩形的路径,并没有填充和描边。
  • 改造案例:04填充矩形.html
  • rect: abbr. 矩形(rectangular);收据(receipt)

2. 快速创建描边矩形和填充矩形

  • 语法: ctx.strokeRect(x, y, width, height);
  • 参数跟ctx.rect相同,注意此方法绘制完路径后立即进行stroke绘制
  • 语法:ctx.fillRect(x, y, width, height);
  • 参数跟ctx.rect相同, 此方法执行完成后。立即对当前矩形进行fill填充。

3. 清除矩形(clearRect)

  • 语法:ctx.clearRect(x, y, width, hegiht);
  • 解释:清除某个矩形内的绘制的内容,相当于橡皮擦。

绘制圆形(arc)

  • 概述:arc() 方法创建弧/曲线(用于创建圆或部分圆)。
  • 语法:ctx.arc(x,y,r,sAngle,eAngle,counterclockwise);
  • arc: 弧(度)弧形物;天穹 英 [ɑːk] 美 [ɑrk]
  • counter 反击,还击;反向移动,对着干;反驳,回答 ['kaʊntə] 美 ['kaʊntɚ]
  • 解释:
  • x,y:圆心坐标。
  • r:半径大小。
  • sAngle:绘制开始的角度。 圆心到最右边点是0度,顺时针方向弧度增大。
  • eAngel:结束的角度,注意是弧度。π
  • counterclockwise:是否是逆时针。true是逆时针,false:顺时针(默认)
  • 弧度和角度的转换公式: rad = deg*Math.PI/180;
  • 在Math提供的方法中sin、cos等都使用的弧度
Canvas绘制矩形&圆形&图片_第1张图片
image.png
  • 三角函数的补充

  • Math.sin(弧度); //夹角对面的边 和 斜边的比值

  • Math.cos(弧度); //夹角侧边 与斜边的比值

  • 圆形上面的点的坐标的计算公式

  • x =x0 + Math.cos(rad) * R;//x0和y0是圆心点坐标

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


    Canvas绘制矩形&圆形&图片_第2张图片
    image.png

绘制图片(drawImage) (重点)

1 基本绘制图片的方式

  • context.drawImage(img,x,y);
  • 参数说明: x,y 绘制图片左上角的坐标,在画布上绘制的坐标点 img是绘制图片的dom对象。

2 在画布上绘制图像,并规定图像的宽度和高度

  • context.drawImage(img,x,y,width,height);
  • 参数说明:width 绘制图片的宽度, height:绘制图片的高度
  • 如果指定宽高,最好成比例,不然图片会被拉伸
  • 等比公式: toH = Height * toW / Width;
  • 设置的高度 = 原高度 * 设置的宽度 / 原宽度;

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

  • context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);
  • 参数说明:
    • sx,sy 裁剪的左上角坐标,
    • swidth:裁剪图片的高度。
    • sheight:裁剪的高度
    • 其他同上

4 用JavaScript创建img对象

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

  • 第二种方式:
var img = new Image();//这个就是 img标签的dom对象
img.src = "imgs/arc.gif";
img.alt = "文本信息";
img.onload = function() {
//图片加载完成后,执行此方法

示意图:

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

  • 截取图片:
裁剪的位置: sx,sy,swidth,sheight : 50 50 120 120
sx,sy,swidth,sheight 相对于原图片的裁剪区域

放置位置:x,y,width,height : 350, 100, 120, 120
x, y ,width, height 相对于画布的显示区域
ctx.drawImage(img, 50, 50, 120, 120, 450, 100, 120, 120);

Canvas绘制矩形&圆形&图片_第3张图片
image.png

你可能感兴趣的:(Canvas绘制矩形&圆形&图片)