Html5 学习系列(五)Canvas绘图API快速入门(2)

简介: Canvas绘图API Demos 上一篇文章中,笔者已经给大家演示了怎么快速用Canvas的API绘制一个矩形出来。接下里我会在本文中给各位介绍Canvas的其他API:绘制线条、绘制椭圆、绘制图片、图片处理等...如果想获得更好的阅读效果请点击老马的独立博客地址。

Canvas绘图API Demos

上一篇文章中,笔者已经给大家演示了怎么快速用Canvas的API绘制一个矩形出来。接下里我会在本文中给各位介绍Canvas的其他API:绘制线条、绘制椭圆、绘制图片、图片处理等...如果想获得更好的阅读效果请点击老马的独立博客地址

一、Canvas绘制线条

    Context对象的beginPath方法表示开始绘制路径,moveTo(x, y)方法设置线段的起点,lineTo(x, y)方法设置线段的终点,stroke方法用来给透明的线段着色。moveto和lineto方法可以多次使用。最后,还可以使用closePath方法,自动绘制一条当前点到起点的直线,形成一个封闭图形,省却使用一次lineto方法。

                        
        <body>
        <canvas id="demoCanvas" width="500" height="600">
        </canvas>
        <script type="text/javascript">
            //通过id获得当前的Canvas对象
            var canvasDom = document.getElementById("demoCanvas");
            //通过Canvas Dom对象获取Context的对象
            var context = canvasDom.getContext("2d");
            context.beginPath(); // 开始路径绘制
            context.moveTo(20, 20); // 设置路径起点,坐标为(20,20)
            context.lineTo(200, 200); // 绘制一条到(200,20)的直线
            context.lineTo(400, 20);
            context.closePath();
            context.lineWidth = 2.0; // 设置线宽
            context.strokeStyle = "#CC0000"; // 设置线的颜色
            context.stroke(); // 进行线的着色,这时整条线才变得可见
        </script>
        </body>
    
二、Canvas绘制文本

    Context上下文对象的fillText(string, x, y)方法是用来绘制文本,它的三个参数分别为文本内容、起点的x坐标、y坐标。使用之前,需用font设置字体、大小、样式(写法类似与CSS的font属性)。与此类似的还有strokeText方法,用来添加空心字。另外注意一点:fillText方法不支持文本断行,即所有文本出现在一行内。所以,如果要生成多行文本,只有调用多次fillText方法。

以下是代码Demo:

                        
        <canvas id="demoCanvas" width="500" height="600"></canvas>
        <script type="text/javascript">
            //通过id获得当前的Canvas对象
            var canvasDom = document.getElementById("demoCanvas");
            //通过Canvas Dom对象获取Context的对象
            var context = canvasDom.getContext("2d");
            context.moveTo(200,200);
            
            // 设置字体
            context.font = "Bold 50px Arial";
            // 设置对齐方式
            context.textAlign = "left";
            // 设置填充颜色
            context.fillStyle = "#005600";
            // 设置字体内容,以及在画布上的位置
            context.fillText("老马!", 10, 50);
            // 绘制空心字
            context.strokeText("blog.itjeek.com!", 10, 100);
        </script>

三、Canvas绘制圆形和椭圆

    在上一篇文章中,笔者已经跟大家介绍过了绘制矩形,绘制其他形状,比如圆形等,都是一个思路,只不过是方法不同罢了。那接下里给各位演示一小绘制圆形和椭圆。Context上下文的arc方法就是绘制圆形或者椭圆,arc方法的x和y参数是圆心坐标,radius是半径,startAngle和endAngle则是扇形的起始角度和终止角度(以弧度表示),anticlockwise表示做图时应该逆时针画(true)还是顺时针画(false)。

以下是绘制图形的Demo:


        <canvas id="demoCanvas" width="500" height="600"></canvas>
        <script type="text/javascript">
            //通过id获得当前的Canvas对象
            var canvasDom = document.getElementById("demoCanvas");
            //通过Canvas Dom对象获取Context的对象
            var context = canvasDom.getContext("2d");
            context.beginPath();//开始绘制路径
            //绘制以 (60,60)为圆心,50为半径长度,从0度到360度(PI是180度),最后一个参数代表顺时针旋转。
            context.arc(60, 60, 50, 0, Math.PI * 2, true);
            context.lineWidth = 2.0;//线的宽度
            context.strokeStyle = "#000";//线的样式
            context.stroke();//绘制空心的,当然如果使用fill那就是填充了。
        </script>

还不赶快动手试一下?

四、Canvas绘制图片

    Canvas绘制图片应该是他的一大特点或者是亮点吧。当然配合File的API,让JS变得无可匹敌。那接下里给大家演示一下怎样绘制图片,并且做出一个立体效果出来。

以下是绘制图片的Demo:


    <canvas id="demoCanvas" width="500" height="600"></canvas>
    <script type="text/javascript">
        //通过id获得当前的Canvas对象
        var canvasDom = document.getElementById("demoCanvas");
        //通过Canvas Dom对象获取Context的对象
        var context = canvasDom.getContext("2d");
        var image = new Image();//创建一张图片
        image.src = "Images/a.png";//设置图片的路径
        image.onload = function() {//当图片加载完成后
            for (var i = 0; i < 10; i++) {//输出10张照片
                //参数:(1)绘制的图片  (2)坐标x,(3)坐标y
                context.drawImage(image, 100 + i * 80, 100 + i * 80);
            }
        };
    </script>


还不赶快动手试一下?

五、总结

Canvas总算介绍了最基本的用法了。当然本文大量借鉴了其他网站的例子。作者也是把最基本的精华部分罗列了一下。总体来说Canvas绘制图片和文本、形状都不是很难,API代码上手难度基本就是初级。但是由此而带来的非常多的可能,让Html5真正的强大到无可比拟的地步。

当然本文并没有涉及到Canvas3D绘制的相关内容,而且关于Canvas绘制渐变色、绘制阴影、图片的相关处理操作等,这些内容,如果读者确实需要的可以自行搜索查找相关资料或者直接阅读Html5的最新标准文档。

本文参考:http://javascript.ruanyifeng.com/htmlapi/canvas.html

 

 

目录
相关文章
|
1月前
|
移动开发 前端开发 HTML5
基于HTML5+Canvas绘制的鼠标跟随三角形碎片光标动画代码
基于HTML5+Canvas绘制的鼠标跟随三角形碎片光标动画特效代码,很有意思,一团三角形碎片跟随鼠标的移动,不冗长、不笨重,反而有一种很轻盈的感觉,非常不错
59 29
|
28天前
|
移动开发 前端开发 HTML5
Html5 Canvas绘制圆形仪表盘动画源码
Html5 Canvas绘制圆形仪表盘动画特效是一款基于HTML5 Canvas绘制的圆形百分比仪表盘动画特效。
18 1
|
2月前
|
Web App开发 移动开发 前端开发
html5 canvas五彩碎纸屑飘落动画特效
h5 canvas飘落纸片动画是一款实现五彩纸屑飘落的背景动画特效,基于canvas绘制的空中飘落的纸屑片动画特效,适用于网页动态背景效果代码。简单使用,欢迎下载!代码适用浏览器:搜狗、360、FireFox(建议)、Chrome、Safari、Opera、傲游、世界之窗,是一款不错的的特效插件,希望大家喜欢!
52 5
|
3月前
|
前端开发
基于canvas实现的彩色纸屑组成文字3d动画HTML源码
基于canvas实现的彩色纸屑组成文字3d动画HTML源码
39 0
基于canvas实现的彩色纸屑组成文字3d动画HTML源码
|
3月前
|
移动开发 前端开发 HTML5
HTML5 Canvas制作的粒子十秒倒计时源码
一段基于HTML5 Canvas制作的粒子爆炸,十秒数字倒计时,全屏倒计时动画效果,给人一种非常大气的视觉感
55 0
HTML5 Canvas制作的粒子十秒倒计时源码
|
3月前
|
前端开发 JavaScript
Canvas三维变化背景动画HTML源码
Canvas三维变化背景动画HTML源码
46 5
|
5月前
|
XML 移动开发 前端开发
HTML5 SVG和canvas的性能探讨
HTML5 中的 SVG(可缩放矢量图形)和 Canvas(画布)分别用于网页图形绘制。SVG 基于矢量图形,使用 XML 描述,适合静态或少量动态内容(如图标、图表),易于编辑且保持高分辨率;Canvas 则基于位图,通过 JavaScript 绘制,更适合快速更新大量图形的场景(如游戏、动态动画),但在复杂图形计算时可能遇到性能瓶颈。总体而言,SVG 适用于静态和少量动态内容,而 Canvas 更适合高频率更新和性能要求高的场景。
|
5月前
|
移动开发 前端开发 JavaScript
HTML5 Canvas详解及应用
HTML5 Canvas 允许通过 JavaScript 在网页上动态绘制图形、动画等视觉内容。首先在 HTML 中定义 `&lt;canvas&gt;` 元素,并通过 JavaScript 获取画布上下文进行绘制。常见方法包括绘制矩形、路径、圆形和文本,以及处理图像和创建动画效果。适用于游戏开发、数据可视化、图像编辑和动态图形展示等多种应用场景。需要注意性能优化、无状态绘制及自行处理事件等问题。
|
5月前
|
移动开发 前端开发 数据挖掘
用HTML5中的 画布(Canvas)在“圳品”信息系统网页上绘制显示饼图
用HTML5中的 画布(Canvas)在“圳品”信息系统网页上绘制显示饼图
|
6月前
|
Dart 前端开发 Java