HTML5绘图总结详解

HTML5的绘图基础

? 在HTML5以前的时代,web前端开发者无法在HTML页面上动态地绘制图片
? HTM5新增了一个<canvas../>元素,相当于一个画布,可以获得一个CanvasRenderingContext2D对象
? CanvasRenderingContext2D提供了很多画图API

HTML5的画图主要是通过CanvasRenderingContext2D这个对象的API来完成的,画图的所有方法都被封装到它里边。
在学习内容中,我们都是简称这个对象为:cxt。

在Canvas上画图的流程

? 步骤1:得到 <canvas../>DOM对象
? 步骤2:调用Canvas对象的getContext()方法得到CanvasRederingContext2D对象(getContext方法里面传一个参数:”2d”)
? 步骤3:调用CanvasRederingContext2D完成画图

HTML5绘制几何图形

CanvasRenderingContext2D对象,只提供了两个方法来绘制几何图形

1. fillStyle="颜色"
2. filleRect(float x,float y,float width,float,height)
3. strokeStyle="颜色"
4. lineWidth=10;
5. lineJoin="meter|round|bevel"
6. strokeRect(float x,float y,float width,float,height)

并没有直接提供其他几何图形(圆形、椭圆、三角)等方法(这些我们都要通过路径来实现)

画空心和实心

1. 画实心的话,我们可以用fillStyle来设置一下实心的颜色。
2. 然后fillRect来画一个实心的矩形框。
3. 那空心的话,我们用strokeStyle,来设置颜色。
4. lineWidth来设置线条的宽度。
5. 然后lineJoin设置线条交界处,是方角还是圆角。
6. 然后strokeRect来画一个空心的矩形。

HTML5绘制字符串

CanvasRenderingContext2D为绘制文字提供了以下两个方法:
fillText(String text,float x,float y,[float maxwidth]):填 充字符串
strokeText(String text,float x,float y,[float maxwidth]):绘制边框
font="bold 45px 宋体"
textAlign设置绘制字符串的水平对齐方式,start|end|left|right|center
textBaseAlign:重直对齐方式:top|hanging|middle|alphabetic|bottom

在画字符串之前,在html5中我们应该使用font="bold 45px 宋体",设置一下字体,这个字体里面其实是3个属性。分别表示文字的:粗细、大小和字体。

在设置完了以后,就可以画文字了。fillText是画的实心的文字;strokeText是画的空心的文字。

设置阴影

shadowBlur:阴影模糊度,浮点数越大越模糊
shasowColor:阴影颜色
shadowOffsetX: x方向的偏移
shadowOffsetY: y方向的偏移

绘制路径

在Canvas上使用路径步骤:

1. 调用CanvasRenderingContext2D对象的beginPath()方法开始定义路径
2. 调用CanvasRenderingContext2D的各种方法添加路径
3. 调用CanvasRenderingContext2D的closePath方法关闭路径
4. 调用CanvasRenderingContext2D的fill()或stroke()方法来填充路径或绘制路径边框

添加路径的方法

1. arc() 方法创建弧/曲线(用于创建圆或部分圆
2. arcTo() 方法在画布上创建介于两个切线之间的弧/曲线
3. bezierCurveTo() 方法通过使用表示三次贝塞尔曲线的指定控制点,向当前路径添加一个点。方法在画布上创建介于两个切线之间的弧/曲线
4. lineTo() 方法添加一个新点,然后创建从该点到画布中最后指定点的线条(该方法并不会创建线条)
5. moveTo 把路径移动到画布中的指定点,不创建线条
6. quadraticCurveTo() 方法通过使用表示二次贝塞尔曲线的指定控制点,向当前路径添加一个点。
7. rect() 方法创建矩形

控制填充风格

线性渐变

1. CanvasGradient代表渐变填充
2. CanvasPattern代表位团填充

使用渐变步骤

3. step1:ctx.createLinearGradient(x,y,xend,yend)返回CavasGradient对象
4. step2:调用CanvasGradient对象的addColorStop(offset,color)向线性渐变中填加颜色,offset值在0-1之间
5. step3:将CanvasGradient对象赋值给xtx.fillStyle或strokeStyle属性

这个渐变,我们有线性渐变和圆形渐变,还有填充图像。

圆形渐变:

这个它的原理也是和线性渐变一样的,就是两个圆,半径到半径之间的这个渐变。

绘制位图

1. CanvasRenderingContext2D绘图方法:

drawImage(Image image,x,y)

参数 描述
img 规定要使用的图像、画布或视频。
sx 可选。开始剪切的 x 坐标位置。
sy 可选。开始剪切的 y 坐标位置。
swidth 可选。被剪切图像的宽度。
sheight 可选。被剪切图像的高度。
x 在画布上放置图像的 x 坐标位置。
y 在画布上放置图像的 y 坐标位置。
width 可选。要使用的图像的宽度。(伸展或缩小图像)
height 可选。要使用的图像的高度。(伸展或缩小图像)

2. 绘制位图

? var image=new Image();
? image.src=图片地址;
? image.onload=function()
? {
? ctx.drawImage(...);
? }

3.绘制位图有一个细节一定要注意:

就是必须得等这个位图加载完毕之后,才能绘制,否则的话,就绘制失败。反正原理就是,在绘图之前,这个图片是加载到内存的,加载完这个DOM才能进行绘图。

原文地址:https://www.cnblogs.com/bdqnit/p/9113941.html

时间: 2024-10-12 22:31:50

HTML5绘图总结详解的相关文章

jqm的多列布局demo,html5的多列布局demo,多列布局的详细讲解,html5开发实例详解

由于移动设备屏幕宽度较小,所以一般不建议使用多列布局.但有时你可能需要并排放置一些元素(如按钮之类的). jQuery Mobile通过约定的类名ui-grid来提供了一种基于css的多列布局方法.共提供了五种布局方式,分别是:ui-gird-solo:单列布局,ui-gird-a:双列布局,ui-gird-b:三列布局,ui-gird-c:四列布局,ui-gird-d:五列布局.布局网格总宽度100%,完全不可见(无边框无背景),没有任何内边距或外边距,不会对网格中的内容产生任何干扰. 今天我

HTML5之Viewport详解

做移动Web开发也有一年多的时间了,虽然手机上浏览器对于PC上来说很友好了,但是手机各种设备的显示尺寸分辨率大小不一也要花大心思兼容它们. 关于HTML5中Viewport的文章Google,百度一搜有很多.记录一些自己理解的内容: Viewport属性详解 Viewport:字面意思为视图窗口,在移动 web 开发中使用.表示将设备浏览器宽度虚拟成一个特定的值(或计算得出)这样利于移动 web 站点跨设备显示效果基本一致. 基础写法: <meta name="viewport"

html5的localstorage详解

HTML API localstorage在浏览器的API有两个:localStorage和sessionStorage,存在于window对象中:localStorage对应window.localStorage,sessionStorage对应window.sessionStorage.localStorage和sessionStorage的区别主要是在于其生存期. 基本使用方法 localStorage.setItem("b","isaac");//设置b为&

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

Android中,如果我们想绘制复杂的自定义View或游戏,我们就需要熟悉绘图API.Android通过Canvas类暴露了很多drawXXX方法,我们可以通过这些方法绘制各种各样的图形.Canvas绘图有三个基本要素:Canvas.绘图坐标系以及Paint.Canvas是画布,我们通过Canvas的各种drawXXX方法将图形绘制到Canvas上面,在drawXXX方法中我们需要传入要绘制的图形的坐标形状,还要传入一个画笔Paint.drawXXX方法以及传入其中的坐标决定了要绘制的图形的形状

关于 HTML5本地存储详解 (转载学习)

HTML5 storage提供了一种方式让网站能够把信息存储到你本地的计算机上,并再以后需要的时候进行获取.这个概念和cookie相似,区别是它是为了更大容量存储设计的. HTML5storage提供了一种方式让网站能够把信息存储到你本地的计算机上,并再以后需要的时候进行获取.这个概念和cookie相似,区别是它是为了更大容量存储设计的.Cookie的大小是受限的,并且每次你请求一个新的页面的时候cookie都会被发送过去.HTML5的storage是存储在你的计算机上,网站在页面加载完毕后可以

Android中Canvas绘图基础详解

原文:http://blog.csdn.net/iispring/article/details/49770651 Android中,如果我们想绘制复杂的自定义View或游戏,我们就需要熟悉绘图API.Android通过Canvas类暴露了很多drawXXX方法,我们可以通过这些方法绘制各种各样的图形.Canvas绘图有三个基本要素:Canvas.绘图坐标系以及Paint.Canvas是画布,我们通过Canvas的各种drawXXX方法将图形绘制到Canvas上面,在drawXXX方法中我们需要

HTML5 Canvas API详解

HTML5 是一个新兴标准,它正在以越来越快的速度替代久经考验的 HTML4.HTML5 是一个 W3C "工作草案" - 意味着它仍然处于开发阶段 - 它包含丰富的元素和属性,它们都支持现行的 HTML 4.01 版本规范.它还引入了几个新元素和属性,它们适用许多使用 web 页面的领域 - 音频.视频.图形.数据存储.内容呈现,等等.本文主要关注图形方面的增强:canvas. 新的 HTML5 canvas 是一个原生 HTML 绘图簿,用于 JavaScript 代码,不使用第三

HTML5干货整理详解canvas的学习方法及学习曲线(收藏保存)

还记得在过去的Web前端开发中,如果你需要绘图或者生成相关图形的话,使用Flash可能是你唯一或者说最强大的实现方式,而在近些年的技术热点HTML5标准中,(画布)能够更加方便的帮助你实现2D绘制图形图像及其各种动画效果功能. 首先我们先来了解一下什么是HTML Canvas? 我们可以在HTML中使用属性width和height来定义Canvas.但是实现Canvas的相关功能主要还依赖于Javascript实现,即HTML5 Canvas API.我们使用javascript来访问和控制Ca

HTML5 离线缓存详解(转)

离线缓存是html5新特性之一,简单理解就是第一次加载后将数据缓存,在没有清除缓存前提下,下一次没有网络也可以加载,用在静态数据的网页或游戏比较好用.当然,Html5新的特性都不是所有浏览器都能支持的,离线缓存也一样.反正IE9(包括)及IE9以下的浏览器目前是不支持的.如果用在移动端,应该都能支持.检测是否支持离线缓存也是比较简单的. if(window.applicationCache){ alert("支持离线缓存"); } else{ alert("不支持离线缓存&q