Canvas (一)

想要使用Canvas,首先要有<canvas>元素。

<canvas id="drawing" width="200" height="200"> Here shows something.</canvas>

然后进入JS文件,先获取这个canvas元素

var drawing=document.getElementById("drawing");

然后判断浏览器是否支持<canvas>,这一步很重要。但是有些浏览器比如Firefox3中会为<canvas>创建DOM对象,但是该对象中并没有getContext()方法。所以应该这样判断浏览器是否支持<canvas>

if(drawing.getContext){}

这里的context是上下文,所谓上下文就是函数所依赖的外部变量。前面是我总结轮子哥所说的话

★★★★★ 2D上下文

向context传入2D可以获得2D上下文对象,可以绘制简单的2d图形。2D上下文的坐标开始于<canvas>元素的左上角,X越大表示越靠右,Y越大表示越靠下。width和height表示水平和垂直防线可用的像素数目。

填充和描边

var drawing=document.getElementById("drawing");
if(drawing.getContext){
    var context=drawing.getContext("2d");
//边框颜色;
    context.strokeStyle="red";
//填充颜色;
    context.fillStyle="#0000FF";
}

绘制矩形

var drawing=document.getElementById("drawing");
if(drawing.getContext){
    var context=drawing.getContext("2d");
//绘制红色填充矩形;
    context.fillStyle="#FF0000";
    context.fillRect(10,10,50,50);
//绘制蓝色半透明填充矩形;
    context.fillStyle="rgba(0,0,255,0.5)";
    context.fillRect(30,30,50,50);

绘制边框线矩形

var drawing=document.getElementById("drawing");
if(drawing.getContext){
    var context=drawing.getContext("2d");
//绘制红色填充矩形;
    context.strokelStyle="#FF0000";
    context.strokeRect(10,10,50,50);
//绘制蓝色半透明填充矩形;
    context.strokeStyle="rgba(0,0,255,0.5)";
    context.strokeRect(30,30,50,50);

绘制路径

绘制路径前,必须在获得2d上下文之后,调用 context.beginPath() 方法。

//绘制固定圆心画弧线
context.arc(x,y,radius,startAngle,endAngle,counterclockwise)
//固定起点以给定的半径画弧线
context.arcTo(x1,y1,x2,y2,radius)
//贝塞尔曲线
//从上一点开始绘制,到(x,y)结束,并且以(c1x,c1y)和(c2x,c2y)为控制点
context.bezierCurveTo(c1x,c1y,c2x,c2y,x,y)
//从上一点绘制直线到(x,y)为止
context.lineTo(x,y)
//将游标移动到(x,y)
context.moveTo(x,y)
//绘制二次曲线,以(cx,cy)为控制点
context.quadraticCurveTo(cx,cy,x,y)
//绘制矩形路径
context.rect(x,y,width,height)

绘制文本

//context.font表示文本样式大小及字体
context.font="bold 14px Arial"
//context.textAlign表示文本对齐方式,当属性值分别为 start 和 end,代表从左和从右阅读方式。
context.textAlign="center"
//context.textBaseLine表示文本的基线
context.textBaseLine="middle"
//fillText(),strokeText()绘制文本,三个参数分别为 要绘制的文本字符串 x坐标 y坐标 最大像素宽度(可选)
context.fillText("abc",100,20);

变换

//围绕原点旋转图像angle弧度
rotate(angle)
//缩放图像,x方向和y方向分别缩放scaleX和scaleY倍,默认值1.0
scale(scaleX,scaleY)
//将坐标原点移动到(x,y)
translate(x,y)

保存当前的context设置

context.save();

返回到上一次保存的context设置

context.restore();

时间: 2024-12-27 13:54:22

Canvas (一)的相关文章

HTML5新增Canvas标签及对应属性、API详解(基础一)

知识说明: HTML5新增的canvas标签,通过创建画布,在画布上创建任何想要的形状,下面将canvas的API以及属性做一个整理,并且附上时钟的示例,便于后期复习学习!Fighting! 一.标签原型 <canvas width=”1000” height=”1000” id=”myCanvas”> 您的浏览器版本过低,不支持HTML5新增的canvas标签. </canvas> 使用js获取该画布,并指定对象 <script> Var canvasID = doc

移动端canvas抗锯齿

未抗锯齿效果图: 加入抗锯齿代码效果: var Game = function(){ var H = document.documentElement.clientHeight || document.body.clientHeight; var W = document.documentElement.clientWidth || document.body.clientWidth; this.canvas = document.getElementById("canvas"); t

Canvas

仿百度贴吧客户端 loading 小球 前言 几天前在简书上看到在一篇文章<Android仿百度贴吧客户端Loading小球>,看了一下作者,他写了两个好玩的 demo,效果图如下: 今天趁着周末有空,用 H5 的 Canvas 仿了一下.这篇文章只实现第一个效果图.这是我实现的效果: 实现原理 实现原理是参考简书的那篇文章,这里不再复述.现在我们来一步一步实现这样的效果. 第零步:画一个圆 源码如下: <!DOCTYPE html> <html> <head&g

canvas设置width, height

在style里面设置canvas的宽高时,会发现画出的图像被拉伸了:在canvas元素中直接设置width和height就会恢复正常:如果在canvas元素里的style里设置width和height会发现又不行了!看了chy龙神 的博客发现了其中玄机.. 首先这是由canvas的构造导致的,canvas是一个画板和一张画纸组成的.当画板和画纸尺寸一致时,不会发生拉伸变形的情况:当画板和画纸尺寸不一致时,就会被拉伸变形. 能正确设置画板和画纸宽高一致的方法,这些方法可以同时设置画板和画纸的宽高:

【铜】第131篇 融合一对一canvas视频录制到备份上(二)简版做成及追加图片过程周四

关键词:一对一canvas视频录制, 简版做成,追加图片过程 一.一对一视频录制 1.1 往备份上布录制-----------------bug处理 现在不知道,网页录制都依赖哪些文件,现在需要一个一个的去除.现在去除差不多了,如下: 经过整理发现,仅仅需要两个文件,就能实现录制.如下: 简版访问地址如下: http://localhost:9001/record-canvas-drawings.html#no-back-button 二.追加图片过程 2.1 学生端追加拍照 <li><

HTML5 Canvas ( 图形的像素操作 ) getImageData, putImageData, ImgData.data

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas</title> <script type="text/javascript" src="../js/jQuery.js"></script> <style type="text/css">

HTML5 Canvas 图像动画的实现(实例小球弹跳)

Canvas 中 clearRect 清除函数 var c=document.getElementById("php100"); var p100=c.getContext("2d"); p100.clearRect(x,y,x,y) // 擦除画布一个区域x-y.x-y ------ 代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <

canvas制作倒计时炫丽效果

<!DOCTYPE html> <head> <title>canvas倒计时</title> <style> .canvas{ display: block; border: 1px solid #000; margin: 50px auto; } </style> </head> <body> <canvas class="canvas" id="canvas"

用微信小程序开发的Canvas绘制可配置的转盘抽奖

使用https://github.com/givebest/GB-canvas-turntable代码移植过而来. 其它 微信小程序感觉是个半成品,代码移植过程比较繁琐麻烦.canvas API 部分都被重写了...canvas z-index不生效,永远在最上层,不支持rotate动画. 更多:点击打开链接

用canvas绘制折线图

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>用canvas绘制折线图</title> 6 </head> 7 <body> 8 <canvas id="cv"></canvas> 9 </body> 1