博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在<canvas>上绘制img(drawImage())时需要注意的事
阅读量:5108 次
发布时间:2019-06-13

本文共 1104 字,大约阅读时间需要 3 分钟。

<canvas>标签相当于是一个画布,css决定画布的样式(这块画布的背景颜色、大小等),脚本(一般使用JavaScript)就是画笔,我们可以在这个画布上绘制线条、形状、文字、图片等。

<canvas>标签对中的内容会在浏览器不支持这个标签的时候(如在IE8以及更旧版本的浏览器上启动)的时候会显示出来,如果浏览器支持该标签则不会显示。

绘制图片和绘制其它内容有些不同,我对绘制图片的理解就是:将一张图片复印到这块画布上。但我们不能直接画到这块画布上,这是有原因的。

我们先来看绘制图片代码的语法:content.dragImage(image,x,y)

image:要绘制的图片。可以是<i大mg>标签中的图片;

x:图片定位点(左上角)的x轴参数;

y:图片定位点(左上角)的y周参数;

当然,语法不止这一种,这里就用这个语法来介绍一下使用该方法时要注意的一件事情。

我们先设置好画布区域和装图片的区域,像这样:

稍微设置了点样式,让这两个区域并排显示。如果你直接使用drawImage()将右边的图像插入到左边的画布上,像下面这样:

1  2     
3

画布

4
抱歉,您的浏览器不支持该标签
5
6
7

图像

8
9
10 11 17

你就会发现,什么事都没发生。

这是因为网页中图片加载是异步加载,图片还没有加载完,脚本就执行了,那它就绘制了个还没加载完的图像,一片空白。

解决方法也很简单:脚本在图片加载完毕后再执行就行了。这个时候就要用到onload事件了。

1  2     
3

画布

4
抱歉,您的浏览器不支持该标签
5
6
7

图像

8
9
10 11 20

这个时候画布上就绘制了我们指定的图片:

想要画布上图像的大小和原图一致,修改drawImage()的参数就好啦,比如我这里设置成这样:

ctx.drawImage(img, 0, 0,300,150);

就一样了:

 

转载于:https://www.cnblogs.com/cwsb/p/10774816.html

你可能感兴趣的文章
QML学习笔记之一
查看>>
App右上角数字
查看>>
WPF中实现多选ComboBox控件
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
关于TFS2010使用常见问题
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
程序员的数学
查看>>
聚合与组合
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
我眼中的技术地图
查看>>
ionic2+ 基础
查看>>
Aizu - 1378 Secret of Chocolate Poles (DP)
查看>>
Screening technology proved cost effective deal
查看>>
Thrift Expected protocol id ffffff82 but got 0
查看>>
【2.2】创建博客文章模型
查看>>
从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router
查看>>
Jsp抓取页面内容
查看>>
大三上学期软件工程作业之点餐系统(网页版)的一些心得
查看>>