在第三章中(canvas学习总结三:绘制路径-线段)我们提高Canvas绘图环境中有些属于立即绘制图形方法,有些绘图方法是基于路径的。

立即绘制图形方法仅有两个strokeRect(),fillRect(),两个方法都是用来绘制矩形的。

Canvas的API提供了如下三个方法,分别用于矩形的清除,描边与填充

  • clearRect(x, y, w, h): 清除指定区域,使其为全透明
  • strokeRect(x, y, w, h): 绘制一个描边的矩形
  • fillRect(x, y, w, h): 绘制一个填充的矩形

我们先来看看基于路径的绘制矩形的方法

moveTo(), lineTo()

function drawRect(){
  // 描边矩形
  ctx.beginPath();
  ctx.moveTo(20, 20);
  ctx.lineTo(200, 20);
  ctx.lineTo(200, 200);
  ctx.lineTo(200, 200);
  ctx.lineTo(20, 200);
  ctx.lineTo(20, 20);
  ctx.stroke();   //填充矩形
  ctx.beginPath();
  ctx.moveTo(220, 20);
  ctx.lineTo(400, 20);
  ctx.lineTo(400, 200);
  ctx.lineTo(220, 200);
  ctx.lineTo(220, 200);
  ctx.lineTo(220, 20);
  ctx.fill();
}

rect()绘制矩形
rect(x, y, w, h):绘制一个封闭的矩形路径
参数x, y 分别为矩形左上角的坐标,w, h 分别为矩形的宽高

function drawRect(){
  ctx.beginPath();
  ctx.rect(20, 20, 180, 180);
  ctx.stroke();
  
  ctx.beginPath();
  ctx.rect(220, 20, 180, 180);
  ctx.fill();
}

立即绘图函数

strokeRect(x, y, w, h):  绘制一个描边的矩形

参数x, y 分别为矩形左上角的坐标,w, h 分别为矩形的宽高

function drawRect(){
  ctx.strokeRect(20, 20, 180, 180);
}

fillRect(x, y, w, h): 绘制一个填充的矩形

参数x, y 分别为矩形左上角的坐标,w, h 分别为矩形的宽高

function drawRect(){
ctx.fillRect(20, 20, 180, 180);
}

clearRect(x, y, w, h): 清除指定区域内的所有像素
参数x, y 分别为矩形左上角的坐标,w, h 分别为矩形的宽高

清除画布的方法

ctx.clearRect(0, 0, canvas.width, canvas.height);

绘制圆角矩形

在第五章中(canvas学习总结五:线段的端点与连接点)我们介绍了lineJoin属性 用来设置线的连接点的样式,因此我们可以绘制圆角矩形

function drawRect(){
  ctx.lineWidth = 13;
  ctx.lineJoin = 'round';
  ctx.strokeRect(20, 20, 180, 180);
}

当然我们还可以使用lineJoin的其他属性值绘制不同方式的矩形。我们可以自己测试一下。

总结:

路径绘制矩形

moveTo(), lineTo()绘制路径,stroke()与fill()进行描边与填充

rect(x, y, w, h)顺时针绘制路径,stroke()与fill()进行描边与填充

立即绘制矩形

strokeRect(x, y, w, h): 绘制一个描边的矩形

fillRect(x, y, w, h): 绘制一个填充的矩形

canvas学习总结六:绘制矩形的更多相关文章

  1. 用canvas实现鼠标拖动绘制矩形框

    需要用到jCanvas插件和jQuery. jCanvas下载:https://raw.githubusercontent.com/caleb531/jcanvas/master/jcanvas.mi ...

  2. 【canvas学习笔记六】状态保存和变换

    save()和restore() save() 保存当前状态,将当前canvas的状态存入栈中. restore() 恢复之前save的一个状态,将之前的状态从栈中弹出. 保存的当前状态包含以下信息: ...

  3. html5 canvas绘制矩形和圆形

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. html5--5-4 绘制矩形

    html5--5-4 绘制矩形 学习要点 掌握绘制矩形的方法:strkeRect()/fillRect() 掌握绘制路径的 beginPath()和closePath() 矩形的绘制方法 rect(x ...

  5. [HTML5 Canvas学习]绘制矩形

    1.使用strokeRect和fillRect方法绘制矩形 a.strokeRect是绘制一个不填充的矩形 b.fillRect是绘制一个填充的矩形 代码: <script> var ca ...

  6. Javascript高级编程学习笔记(86)—— Canvas(3)绘制矩形

    绘制矩形 矩形是唯一一种可以直接在2D上下文中绘制的形状. 与矩形有关的方法包括: fillRect() strokeRect() clearRect() 上述方法都接收四个参数: 绘制矩形的 X 坐 ...

  7. h5学习-canvas绘制矩形、圆形、文字、动画

    绘制矩形<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...

  8. Canvas入门(1):绘制矩形、圆、直线、曲线等基本图形

    来源:http://www.ido321.com/968.html 一.Canvas的基础知识 Canvas是HTML 5中新增的元素,专门用于绘制图形.canvas元素就相当于一块“画布”,一块无色 ...

  9. 【canvas学习笔记二】绘制图形

    上一篇我们已经讲述了canvas的基本用法,学会了构建canvas环境.现在我们就来学习绘制一些基本图形. 坐标 canvas的坐标原点在左上角,从左到右X轴坐标增加,从上到下Y轴坐标增加.坐标的一个 ...

随机推荐

  1. VSTO在幻灯片里面添加按钮对象

    //添加Form窗体,窗体中添加Image控件,单击弹出"PPT"信息提示 //命名引用:using MF = Microsoft.Vbe.Interop.Forms; priva ...

  2. 深入理解JavaScript中的闭包

    闭包没有想象的那么简单 闭包的概念在JavaScript中占据了十分重要的地位,有不少开发者分不清匿名函数和闭包的概念,把它们混为一谈,我希望借这篇文章能够让大家对闭包有一个清晰的认识. 大家都知道变 ...

  3. Random随机数种子生成,减少生成重复随机数的可能

    我们都知道使用Random可以生成随机数,默认的无参的构造函数New Random().使用与时间相关的默认种子值,初始化 System.Random 类的新实例. 这种方式生成随机数时重复的概率很大 ...

  4. maven下配置pom.xml

    博主原创,转载请注明. 遇到的问题: 缺少依赖库.解决办法: 在build标签中添加: <plugin> <groupId>org.apache.maven.plugins&l ...

  5. undefined variable _session php

    解决方法: if (version_compare(PHP_VERSION, '5.4.0', '<')) { if(session_id() == '') {session_start();} ...

  6. URL重定向

    /** * URL重定向 * @param string $url 重定向的URL地址 * @param integer $time 重定向的等待时间(秒) * @param string $msg ...

  7. 一起学习c++11——c++11中的新语法

    c++11新语法1: auto关键字 c++11 添加的最有用的一个特性应该就是auto关键字. 不知道大家有没有写过这样的代码: std::map<std::string, std::vect ...

  8. CSS学习笔记10 相对定位,绝对定位与固定定位

    文档流中的元素的位置由元素在 (X)HTML 中的位置决定,这就是最原始的普通流,前面讲到的浮动CSS学习笔记08 浮动可以改变元素在文档流中的位置,除了这个我们还可以通过使用CSS的position ...

  9. 第14章 Linux开机详细流程

    本文目录: 14.1 按下电源和bios阶段 14.2 MBR和各种bootloader阶段 14.2.1 boot loader 14.2.2 分区表 14.2.3 采用VBR/EBR方式引导操作系 ...

  10. C++基础之引用与指针的区别与联系、常引用使用时应注意的问题

    什么是引用? 引用就是对变量起一个别名,而变量还是原来的变量,并没有重新定义一个变量.例如下面的例子:   #include<iostream> using namespace std; ...