Canvas绘图基础(一)
简单图形绘制
矩形:描边与填充
Canvas的API提供了三个方法,分别用于矩形的清除、描边及填充
clearRect(double x, double y, double w, double h)
strokeRect(double x, double y, double w, double h)
fillRect(double x, double y, double w, double h)
看一下这三个方法的使用
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
- <meta charset="utf-8">
- <title>TESTAPP</title>
- <style>
- * {
- padding: 0;
- margin: 0;
- }
- #canvas {
- background: #ccc;
- border: 1px solid #aaa;
- border-radius: 8px;
- display: block;
- margin: 20px auto;
- }
- </style>
- </head>
- <body>
- <canvas id="canvas" width="600" height="400">
- Canvas is not supported.
- </canvas>
- <script>
- var cvs = document.getElementById('canvas');
- ctx = cvs.getContext('2d');
- ctx.lineJoin = 'round';
- ctx.lineWidth = 30;
- ctx.font = "24px Helvetica";
- ctx.fillText("Click anywhere to erase", 175, 40);
- ctx.strokeRect(75, 100, 200, 200);
- ctx.fillRect(325, 100, 200, 200);
- ctx.canvas.onmousedown = function(e) {
- ctx.clearRect(0, 0, cvs.width, cvs.height);
- };
- </script>
- </body>
- </html>
clearRect(double x, double y, double w, double h)
该方法将指定矩形与当前剪辑区域相交范围内的所有像素清除。
在默认情况下,剪辑区域的大小就是整个canvas,所以,如果你没有改动剪辑区域的话,那么在参数所指范围内的所有像素都会被清除。所谓“清除像素”,指的是将其颜色设置为全透明的黑色。这在实际效果上就等同域“擦除”erase或者“清除”clear了某个像素,从而使得canvas的背景可以透过像素显示出来。
strokeRect(double x, double y, double w, double h)
使用如下属性,为指定的矩形描边
strokeStyle lineWidth lineJoin miterLimit
fillRect(double x, double y, double w, double h)
使用fillStyle属性填充指定的矩形。
线段
Canvas绘图环境提供了两个可以用来创建线性路径的方法:moveTo() lineTo(),要使用线性路径(也就是线段)出现在canvas中,在创建路径之后还要调用stroke()方法。
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
- <meta charset="utf-8">
- <title>TEST APP</title>
- <style>
- * {
- padding: 0;
- margin: 0;
- }
- #canvas {
- background: #ccc;
- border: 1px solid #aaa;
- border-radius: 8px;
- display: block;
- margin: 20px auto;
- }
- </style>
- </head>
- <body>
- <canvas id="canvas" width="600" height="400">
- Canvas is not supported.
- </canvas>
- <script>
- var cvs = document.getElementById('canvas');
- ctx = cvs.getContext('2d');
- ctx.lineWidth = 1;
- ctx.beginPath();
- ctx.moveTo(50, 10);
- ctx.lineTo(550, 10);
- ctx.stroke();
- ctx.beginPath();
- ctx.strokeStyle = "#f00";
- ctx.moveTo(50, 100);
- ctx.lineTo(550, 100);
- ctx.stroke();
- </script>
- </body>
- </html>
圆弧与圆形
Canvas绘图环境提供了两个用于绘制圆弧与圆形的方法: arc() arcTo()
arc(x, y, radius, startAngle, endAngle, counterClockwise)
前面两个参数表示圆心坐标,radius表示圆半径,startAngle和endAngle表示浏览器在圆周上绘制圆弧的起始角度和终结角度,最后一个参数,counterClockwise是可选的,true,是逆时针画圆,false,顺时针画圆。
arcTo(x1, y1, x2, y2, radius)
参数意为两个点与半径
该方法以指定的半径来绘制一条圆弧,绘制的圆弧与当前点到第一个点(x1, y1)的连线相切,而且与第一个点到第二个点(x2, y2)的连线也相切,由于这些特性,该方法非常适合绘制矩形的圆角。
坐标变换:平移、缩放与旋转
这里看一个小例子,也许这里坐标原点的移动并没有带来多大的好处,但想像一下,如果你需要绘制的是很多图形的情景
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
- <meta charset="utf-8">
- <title>TEST APP</title>
- <style>
- * {
- padding: 0;
- margin: 0;
- }
- #canvas {
- background: #ccc;
- border: 1px solid #aaa;
- border-radius: 8px;
- display: block;
- margin: 20px auto;
- }
- </style>
- </head>
- <body>
- <canvas id="canvas" width="600" height="400">
- Canvas is not supported.
- </canvas>
- <script>
- var cvs = document.getElementById("canvas"),
- ctx = cvs.getContext('2d'),
- RECTANGLE_WIDTH = 100,
- RECTANGLE_HEIGHT = 100;
- //没有移动坐标原点的情况
- ctx.strokeRect(cvs.width / 2 - RECTANGLE_WIDTH ,
- cvs.height / 2 - RECTANGLE_HEIGHT,
- RECTANGLE_WIDTH, RECTANGLE_HEIGHT);
- //移动坐标原点
- ctx.translate(cvs.width / 2 - RECTANGLE_WIDTH / 2, cvs.height / 2 - RECTANGLE_HEIGHT / 2);
- ctx.beginPath();
- ctx.strokeStyle = "#f00";
- ctx.strokeRect(0, 0, RECTANGLE_WIDTH, RECTANGLE_HEIGHT);
- </script>
- </body>
- </html>
本文所有前端代码均在谷歌浏览器测试,其他浏览器没有测试过
Canvas绘图基础(一)的更多相关文章
- Android中Canvas绘图基础详解(附源码下载) (转)
Android中Canvas绘图基础详解(附源码下载) 原文链接 http://blog.csdn.net/iispring/article/details/49770651 AndroidCa ...
- canvas绘图基础
<canvas>元素是HTML5中的绘图元素,通过定义一个画布区域,然后使用javascript动态地在这个区域里面绘制图形,对于2D和3D图形都可以绘制,我们将其分成2D上下文和WebG ...
- HTML5自学笔记[ 11 ]canvas绘图基础1
html5新增<canvas>标签用于绘制图像,默认宽高是300*150,canvas的宽高需要在这里设置,在css中设置会有问题:设置的形状,如矩形,会等比缩放,而非设置的宽高. 在不支 ...
- canvas绘图基础及基于粒子系统的雪花飘落
canvas是html中的一个元素,可以通过js操控绘图! 可以绘制各种图形,各种填充样式! 绘制时可以进行旋转,缩放,平移,但并不是很灵活! 有一对比较好用的方法是save restore! sav ...
- HTML5 canvas绘图基础(电子名片生成器源码)
创建canvas <canvas id="myCanvas" class="canvas"> 您的浏览器不支持canvas </canvas& ...
- HTML5自学笔记[ 17 ]canvas绘图基础4
绘制图像: drawImage(oImg,x,y),oImg是一个Image对象,(x,y)为绘制起点,绘制的图像大小和源图大小一样. drawImage(oImg,x,y,w,h),后两个参数设置绘 ...
- HTML5自学笔记[ 16 ]canvas绘图基础3
canvas还提供提供了一些动态方法,使图像可以旋转.缩放和移动,与css3中的方法一样. 移动:translate(x,y),x和y为横竖方向的偏移量 旋转:rotate(弧度),弧度=角度*Mat ...
- HTML5自学笔记[ 14 ]canvas绘图基础2
canvas绘制路径不仅可以绘制直线和多边形,还提供了绘制曲线的方法,利用这些方法可以画出多种曲线效果. 方法1:arc(x,y,r,起始弧度,结束弧度,绘制方向);其中(x,y)为圆心坐标,r为半径 ...
- HTML5自学笔记[ 23 ]canvas绘图基础7
变换矩阵: transform(a,b,c,d,e,f),多次使用该函数,效果是多次状态改变的累加: setTransform(a,b,c,d,e,f),会忽略之前的变换,从起始状态开始改变.
随机推荐
- [Asp.net 5] Localization-Asp.net运行时多语言
本节介绍的是Microsoft.AspNet.Localization工程.该工程是运行在Asp.net 5环境中的运行时多语言设置. ASP.net 5中间件技术 在新的Asp.net 5中,可以将 ...
- php中的登陆login
Login <?php require "../include/DBClass.php"; $username=$_POST['UserName']; $password=$ ...
- WCF入门教程(五)配置文件
WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...
- GJM :多人在线游戏的设计思路
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- 动画在webapp中的现状
webapp的一大优势便是在view切换时候可以拥有媲美与native的动画效果,但是很多时候那只是一种想法,真正的情况却不是这样 产生此问题的原因有: ① 手机CPU烂! ② 手机显卡烂!就算四核其 ...
- tomcat远程调试javaweb
当把一个本地项目部署到远程服务器后有可能出现意想不到错误,这个时候通过远程调试能够更清楚的找到bug所在位置. 目前百度tomcat绝大多数方法都是在startup.sh或者catalina.sh增加 ...
- jQuery插件中文乱码解决办法
修改jQuery插件源代码的时候,中文字符有时候会显示乱码,通常这个插件是老外写的,默认文件的编码格式ANSI格式,源代码写中文字符的时候就会显示乱码,解决方法就是将文件编码格式换成UTF-8格式 保 ...
- O365(世纪互联)SharePoint 之文档库使用小记
前言 当O365越来越流行的时候,大家往往更多使用的是传统的Office功能,有太少订阅用户能触及到O365的一个非常棒的功能,叫做SharePoint online. 下面,我们就以图文并茂的方式, ...
- 用Kotlin开发Android应用(III):扩展函数和默认值
这是关于Kotlin的第三篇. 原文标题:Kotlin for Android (III): Extension functions and default values 原文链接:http://an ...
- [Android]一个干净的架构(翻译)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5276587.html 一个干净的架构 原文:https://b ...