html5提供了一个<canvas>标签,结合javascript的canvas api接口可以用来绘制图形和动画。最近工作中涉及到画图的任务,下面来了解一下canvas的基础:canvas画布。

 <style type="text/css">
body {padding: 40px 0 0 40px;}
#canvas1,#canvas2 {background: #ff0000; opacity: 0.1; margin: auto;}
</style> <div class="wrap">
<canvas id="canvas1"></canvas>
<canvas id="canvas2"></canvas>
</div>
<div class="wrap">
<img id="img" src="../../images/blue-300x150.png" alt="图片">
</div>

1,canvas(画布)的width和height

上面的代码中放置了两个canvas画布,一副图片,可以看到canvas标签和img标签一样都是内联元素,canvas也有width和height属性,可以指定它的宽高,如果不指定默认为300x150。

这里需要注意的是,如果用css样式来指定canvas标签的宽高,那么canvas画布中的图形在渲染时进行相应的缩放(变形)以适应标签的宽高,所以不要用css样式来指定画布的宽高,而是显示的通过设置canvas的width和height来指定画布的宽高。

2,画布栅格和坐标空间

canvas默认被栅格(网格)覆盖,一般来说(画布没有被压缩或拉伸)一个网格代表canvas中的一个像素。二维的canvas画布有一个原点,默认的位置位于画布的左上角:

这和数学中常用的直角坐标系略有不同,它的y轴正方向是朝下的,这同时也影响了画布中象限角的分布,30度位于x轴的下方而不是上方,在画图时需要注意。不过canvas画布是可以旋转的,而且原点也是可以移动的。

参考:

Canvas教程

<canvas>标签

canvas绘画基础(一):认识canvas画布的更多相关文章

  1. 开发Canvas 绘画应用(四):实现拖拽绘画

    在开发Canvas绘画应用(三):实现对照绘画中,我们实现了视图引导的第一部分,这一篇我们来完成第二部分,即将图片直接拖到画布上进行绘画. ✁ 拖放如何实现? [拖放的基本概念]:创建一个绝对定位的元 ...

  2. 开发Canvas 绘画应用(二):实现绘画

    开发Canvas 绘画应用(一):搭好框架 中我们已经把基本框架及基础功能实现了,现在要实现本应用的重点:绘画功能. 首先分析一下,我们要实现绘画,需要具备的理论知识如下: (1)获取触摸点的坐标 类 ...

  3. HTML5 canvas绘图基础(电子名片生成器源码)

    创建canvas <canvas id="myCanvas" class="canvas"> 您的浏览器不支持canvas </canvas& ...

  4. HTML5 CANVAS制图 基础总结

    一.基本绘图 首先,定义2D渲染变量ct(这里用了Jquery库): var ct = $(#canvasId).get(0).getContext('2d'); 以下是绘制各种基本图形的方法: // ...

  5. Android中Canvas绘图基础详解(附源码下载) (转)

    Android中Canvas绘图基础详解(附源码下载) 原文链接  http://blog.csdn.net/iispring/article/details/49770651   AndroidCa ...

  6. canvas API ,通俗的canvas基础知识(一)

    在没学canvas的时候,觉得canvas是这么的神秘,这么的绚丽,这么的高深,用canvas做出来的效果是如此的炫酷,能做的事情如此的宽广,简直让我心生敬畏之心,时常感叹:我要是得此技能,必定要上天 ...

  7. 开发Canvas 绘画应用(三):实现对照绘画

    需求分析 在我的毕设中,提出了视图引导的概念,由两部分功能组成: (1)可以对照着图片进行绘画,即将图片以半透明的方式呈现在绘图板上,然后用户可以对照着进行绘画: (2)可以直接将简笔画图片直接拖拽到 ...

  8. 开发Canvas 绘画应用(一):搭好框架

    毕业汪今年要毕业啦,毕设做的是三维模型草图检索,年前将算法移植到移动端做了一个小应用(利用nodejs搭的服务),正好也趁此机会可以将前端的 Canvas 好好学一下~~毕设差不多做完了,现将思路和代 ...

  9. Canvas 绘画

    一.Canvas 应用场景 1.游戏 2.图表 3.动画 4.codepen.io (HTML5 动效) 最早 二.Canvas 发展历史 1.最早在apple的safari  1.3中引入 2.ie ...

随机推荐

  1. 浅尝Java(一)

    主题:数据类型,数值类型变量相互转化 Java是强类型的语言,与JavaScript(松散型)在数据类型上有很大的差异(1.所有变量必须先申明,后使用:2.指定类型的变量只接受与之匹配类型的值).这个 ...

  2. gitlab查看项目ID/projectId

    背景 最近有个CI打包平台,项目projectId弄错,导致拉取到错误仓库.笔者一直通过项目名称(project name)访问,首次接触project id,搜索一圈才找到快捷查看方法,记录于此. ...

  3. Problem4-Project Euler

    Largest palindrome product   A palindromic number reads the same both ways. The largest palindrome m ...

  4. 七牛云A账号数据迁移到B账号下

    1,七牛云A账号下开启空间授权,可以让B账号可以访问A账号下的空间,,授予权限只读即可. 2,下载七牛云命令行工具.(通过命令完成数据迁移) https://dn-devtools.qbox.me/2 ...

  5. Oracle EBS FTP显示无法与某IP 连接

    首先 用root用户登录 如果可以登录 那么应该是权限的问题 这里选择 方法二:修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示: ## Allow root to ...

  6. 【mysql数据库】Linux下mysql安装连接全过程(含有问题详解)

    本次安装操作在腾讯云上实现(版本:CentOS Linux release 7.4.1708 (Core) ). 根据教程实现(中途各种挖坑,填坑...),地址:http://www.runoob.c ...

  7. Android 增加JNI

    Android:JNI 与 NDK到底是什么?(含实例教学) 前言 在android开发中,使用NDK开发的需求正逐渐增大: 很多人搞不懂JNI与NDK到底是怎么回事? 今天我们先介绍JNI与NDK之 ...

  8. Linux 下解压 rar 文件

    网上下载rar 压缩文件的使用,在linux在我们需要对其进行解压缩,这个时候,我们需要安装 rar相关的文件,来进行解压缩. 1. 下载 我们进入rarlab网站,进行下载 rar for linu ...

  9. kettle性能优化

    普通开发电脑,如果没有网络查询步骤,kettle正常的速度应该在3000~20000条/秒.如果速度在2000条/秒一下,就可能需要调优. 性能优化的方式包括如下几种: 1.通过改变开始复制的数量(针 ...

  10. ZooKeeper 分布式协调服务介绍

    0. 说明 从自己的独立博客迁移,该部分为 Zookeeper分布式协调服务介绍 原文链接  ZooKeeper 指南 1. ZooKeeper 简介 [官方介绍] ZooKeeper 是一种集中式服 ...