HTML5 Canvas API中drawImage()方法的使用代码实例分享(图)


本文摘自PHP中文网,作者黄舟,侵删。

这篇文章主要介绍了HTML5 Canvas API中drawImage()方法的使用实例,drawImage()方法主要用来对图像进行缩放或裁剪,文中给出了其坐标及相关参数的用法,需要的朋友可以参考下

drawImage()是一个很关键的方法,它可以引入图像、画布、视频,并对其进行缩放或裁剪。

一共有三种表现形式:

语法 1


1

context.drawImage(img,dx,dy);



语法 2

1

context.drawImage(img,dx,dy,dw,dw);

  1. 语法 3

JavaScript Code复制内容到剪贴板

1

context.drawImage(img,sx,sy,sw,sh,dx,dy,dw,dh);

来看一下坐标草图:

PS: 不要在样式中定义<canvas> 的宽和高,否则,里面所画的图片会自动放大或者缩小。
三参数的是标准形式,可用于加载图像、画布或视频;五参数的除了可以加载图像还可以对图像进行指定宽高的缩放;九参数的除了缩放,还可以裁剪。各参数意义见下表。

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

下面,我们加载一个图片试试。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

JavaScript Code复制内容到剪贴板

<!DOCTYPE html>  

<html lang="zh">  

<head>  

    <meta charset="UTF-8">  

    <title>drawImage()</title>  

    <style>  

        body { background: url("./images/bg3.jpg") repeat; }

        #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }  

    </style>  

</head>  

<body>  

<p id="canvas-warp">  

    <canvas id="canvas">  

        你的浏览器居然不支持Canvas?!赶快换一个吧!!  

    </canvas>  

</p>  

   

<script>  

    window.onload = function(){  

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

        canvas.width = 800;  

        canvas.height = 600;  

        var context = canvas.getContext("2d");  

        context.fillStyle = "#FFF";  

        context.fillRect(0,0,800,600);  

   

        var img = new Image();  

        img.src = "./images/20-1.jpg";  

        img.onload = function(){  

            context.drawImage(img,200,50);  

        }  

    };  

</script>  

</body>  

</html>


运行结果:

创建相框:
这里,我们结合clip()和drawImage()以及三次贝塞尔曲线bezierCurveTo(),来为上面一个案例,加上一个心形的相框~

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

JavaScript Code复制内容到剪贴板

<!DOCTYPE html>  

<html lang="zh">  

<head>  

    <meta charset="UTF-8">  

    <title>绘制心形相框</title>  

    <style>  

        body { background: url("./images/bg3.jpg") repeat; }

        #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }  

    </style>  

</head>  

<body>  

<p id="canvas-warp">  

    <canvas id="canvas">  

        你的浏览器居然不支持Canvas?!赶快换一个吧!!  

    </canvas>  

</p>  

   

<script>  

    window.onload = function(){  

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

        canvas.width = 800;  

        canvas.height = 600;  

        var context = canvas.getContext("2d");  

        context.fillStyle = "#FFF";  

        context.fillRect(0,0,800,600);  

   

        context.beginPath();  

        context.moveTo(400,260);  

        context.bezierCurveTo(450,220,450,300,400,315);  

        context.bezierCurveTo(350,300,350,220,400,260);  

        context.clip();  

        context.closePath();  

   

        var img = new Image();  

        img.src = "./images/20-1.jpg";  

        img.onload = function(){  

            context.drawImage(img,348,240,100,100);  

        }  

    };  

</script>  

</body>  

</html>

运行结果:

是不是美美的?好啦,至此最关键的遮罩和图像裁剪以及说完了,其实在java.awt中,drawImage()也是一个至关重要的方法。有人说制作Java游戏界面,只要会用drawImage()就可以一招打遍天下~在Canvas里也是一样的。美工提供的素材基本都是图片,这个时候drawImage()对图片的处理就很重要了。即使基本功,也是对图片最重要的处理方法。

以上就是HTML5 Canvas API中drawImage()方法的使用代码实例分享(图)的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

h5拖放api进行拖放排序

详解HTML5 表单属性

HTML5中的canvas 和 svg分别是什么?它们的区别在何处?(实例)

HTML5中使用json对象的实例代码

HTML5的学习路线分析

HTML5实践-三步实现响应式设计的详细介绍

详解canvas实现圆弧、圆环进度条的实例方法

h5手机扫码怎么实现

HTML5制作查询页面实例

什么是notifications?HTML5 notifications桌面提醒

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...