有关Canvas的一点小事—图像绘制

1、  使用canvas绘制图像

什么是图像?在js中它就是一个<img src=””>,<img>有两种接收图像信息的方法,一个是直接链接到图像地址,一个使用base64数据,不过这里讨论的是canvas要使用的Image对象。我们有两个方式定义:

<1>在html中定义好,然后根据id获取

var img=document.getElementById("scream");

 

<2>新建image对象

var img = new Image();img.onload = function(){//在这里面进行对图像对象的操作
ctx.drawImage(img,0,0);         };img.src = 'img/6.png';

 

得到img对象后,我们有三种方式在canvas上绘制你想要的图像。

<1>只定义开始绘制的坐标,图像的宽和高取决于原图像文件的大小

                

   ctx.drawImage(img,10,10);//***第一种,三个参数分别是Image,绘制开始的x,y

 

 <2>定义开始的坐标,和绘制的宽和高

                   

ctx.drawImage(img,100,100,width,height);//***第二种,三个参数分别是Image,绘制开始的x,y和拉伸的宽度高度

 

<3>切割原图片,并绘制到canvas的制定位置

              

  ctx.drawImage(img,sx,sy,sw,sh,200,80,sw,sh);//***第三种,三个参数分别是Image,切割原图的开始坐标和宽高,绘制开始的x,y和拉伸的宽度高度

 附完整的代码:

          

<!DOCTYPE html>  
<html lang="zh-cn">  <head>  <meta charset="UTF-8"/>  <script src='js/jquery-3.3.1.min.js'></script><style>body{background:black;text-align:center;}#myCanvas{background:white;}#contain{width:100%;height:600px;}#scream{width:100%;}</style></head>  <body> <img src="img/7.png" id="scream" hidden><div id="contain"><canvas id="myCanvas"></canvas></div><script type="text/javascript"> $(document).ready(function(){var contain = document.getElementById('contain');var c=document.getElementById("myCanvas");var ctx=c.getContext("2d");c.width=contain.offsetWidth;c.height=contain.offsetHeight;//***根据容器大小设置宽和高/*从dom元素中获取图像*/var img=document.getElementById("scream");ctx.drawImage(img,10,10);//***第一种,三个参数分别是Image,绘制开始的x,yvar width = img.width;/*新建一个图像元素*/var img = new Image();img.onload = function(){var sw = img.width;var sh = img.height;var height = width*sh*1.0/sw;ctx.drawImage(img,100,100,width,height);//***第二种,三个参数分别是Image,绘制开始的x,y和拉伸的宽度高度var sx = sw-width;var sy = sh-height;ctx.drawImage(img,sx,sy,sw,sh,200,80,sw,sh);//***第三种,三个参数分别是Image,切割原图的开始坐标和宽高,绘制开始的x,y和拉伸的宽度高度/*后面设置的是原图的宽和高,并不是切割出来的部分的宽和高,需要转换*/};img.src = 'img/6.png';//*这个图像请比第一个大一点,最好大很多
 });</script>  </body>  
</html>  
canvas绘制图像

 

        

 

 

 

 

参考:

Js中获取各种宽度高度的问题:

https://www.cnblogs.com/wangkongming/p/6195903.html

 

 

转载于:https://www.cnblogs.com/liwxmyself/p/10267012.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jQuery教程09-子元素筛选选择器

jQuery选择器之子元素筛选选择器 子元素筛选选择器不常使用&#xff0c;其筛选规则比起其它的选择器稍微要复杂点 子元素筛选选择器描述表&#xff1a; 注意&#xff1a; :first只匹配一个单独的元素&#xff0c;但是:first-child选择器可以匹配多个&#xff1a;即为每个父…

Python学习 - 之super函数

#super 真的是调用父类吗&#xff1f; class A:def __init__(self):print("A")class B(A):def __init__(self):super().__init__()print("B")class C(A):def __init__(self):print("C")super().__init__()class D(B,C):def __init__(self):print…

PHP-date(),time()函数的应用

1、求当前的时间戳&#xff08;单位&#xff1a;秒&#xff09; 说明&#xff1a;time() 函数返回自 Unix 纪元&#xff08;January 1 1970 00:00:00 GMT&#xff09;起的当前时间的秒数 语法&#xff1a;time() 举个栗子&#xff1a; //time():返回当前时间的 Unix 时间戳 e…

关于ppt中嵌入echarts图表

1.首先需要PPT2013版本以上带有开发工具&#xff0c;能够添加microsoft web browser控件 2.将echarts图表的html代码中加载 <meta http-equiv"X-UA-Compatible" content"IEEmulateIE*"/>代码&#xff08;*处至少为9或以上&#xff09;&#xff0c;将…

jQuery教程10-表单元素选择器

无论是提交还是传递数据&#xff0c;表单元素在动态交互页面的作用是非常重要的。jQuery中专门加入了表单选择器&#xff0c;从而能够极其方便地获取到某个类型的表单元素。 表单选择器的具体方法描述&#xff1a; 注意&#xff1a; 除了input筛选选择器&#xff0c;几乎每…

【python】BytesIO与串化

一共有以下几个概念 1、类文件&#xff1a; File(path), open(path), BytesIO(), ... 文件读之前要seek(0) 2、字符串&#xff1a; file.read() 3、对象: dict, pdfObject, 相互转换&#xff1a; 对象到文件&#xff1a; cPickle.dump(object, f) 文件到字符串&#xff1a;f.s…

PHP出现 Notice: Undefined index:...的原因及解决办法

<?php$user$_GET[username]; echo $user; ?> 直接运行改php脚本的话会出现” Notice: Undefined index: username in D:wamp\test\test.php on line 2”的警告,但这是PHP 的提示而非报错&#xff0c;这里我未给$user赋予值,就把它输出,所以报错了。PHP 本身不需要事…

iOS中 openGL常用函数记录(部分)

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 注&#xff1a;这行代码是用于清楚屏幕。GL_DEPTH_BUFFER_BIT 清除深度缓冲 glVertexPointer(3, GL_FLOAT, 0, triangleVertices); 注&#xff1a;此函数告诉OpenGL的情况下我们的数据是什么格式&#xff0c;它是有4个参数…

F5刷新表单页不能清空缓存

当我F5刷新表单页时&#xff0c;无法清空input框中的值。那是因为多数浏览器默认会缓存input的值&#xff0c;只能通过CtrlF5进行强制刷新餐能清空缓存记录。那有没有办法直接通过按F5进行清空呢&#xff1f;办法是有的。 不让浏览器缓存input的值的2种方法&#xff1a; 方法…

web开发:清浮动

一、display总结 二、overflow 三、浮动布局 四、清浮动 五、清浮动的方式 一、display总结 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>display总结</title><style type"text/css">/*1.同行显…

通过jQuery给select元素的option标签添加自定义属性

有时候需要个option标签传递多个值&#xff0c;仅仅依靠value属性是不够的&#xff0c;因此通过给select元素的option添加新的元素&#xff0c;来获取多个值。 <select name"city" id"city_id" onchange "setAct(this)"><option valu…

区块链到底是什么?和普通人有什么关系?

区块链到底是什么&#xff1f;和普通人有什么关系&#xff1f; 简单讲&#xff0c;区块链就是一个去中心化的信任机制。本问答主要针对想了解区块链&#xff0c;无专业技术和金融背景的普通人。会尽量回避一切技术术语。 问&#xff1a;什么是区块链&#xff1f; 答&#xff1a…

在windows系统和linux系统中查询IP地址命令的不同

在linux和windows系统上查询IP地址的命令是不一样的。 在linux中的命令行模式下&#xff0c;输入ifconfig即可查询到IP。而在windows系统下要查询IP地址需要先打开dos命令行&#xff0c;然后输入ipconfig。回车即可。 注意&#xff0c;两个命令时不一样的&am…

JavaScript实现复选框的全选/全不选和批量选择

实现数据的批量选择以及全选/全部选功能的效果如下所示&#xff1a; 代码如下&#xff1a; <a class"btn btn-default" id"search_like" style"margin-right: 5px;">搜索</a> <a class"btn btn-success" id"s…

ambari搭建注意事项

环境准备 当需要将一台主机加入到 Ambari 管理的Hadoop集群时&#xff0c;需要对主机进行以下相关设置。 设置hostname并分发hosts文件 每台机器都需要设置唯一的hostname。集群内所有机器的IP和hostname对应关系应全部写入每台机器的hosts文件中。 设置系统语言 Ambari管理下的…

php利用mkdir()创建多级目录

先介绍一下 mkdir() 这个函数&#xff1a; mkdir($path,0777,true); 第一个参数&#xff1a;必须&#xff0c;代表要创建的多级目录的路径&#xff1b; 第二个参数&#xff1a;设定目录的权限&#xff0c;默认是 0777&#xff0c;意味着最大可能的访问权&#xff1b; 第三个…

Python魔术世界 1 如何使用Visual Studio在WIN10中一键安装Python3入门编程环境并测试Django...

本文通过VS安装Python和Django的环境&#xff0c;创建了一个Web程序&#xff0c;前后5分钟的操作&#xff0c;让你快速入门Python的编程世界&#xff0c;各种Python和Django的概念会在实战中给你娓娓道来。 Django其实就是使用Python写的网站生成器半成品网站。其提供了一些非常…

关于IE浏览器不支持jQuery-ajax传值的问题

在jQuery中ajax的格式如下所示&#xff1a; <!DOCTYPE HTML> <html> <head><script src"http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script><script type"text/javascript">$(function(){//按钮单击时执行…

win10 无法连接路由器共享设备 报错0X80004005

用路由器挂了个硬盘&#xff0c;win10无法用文件夹访问&#xff0c;试了各种方法都没用&#xff0c;后来才发现是windows的‘SMB 1.0/CIFS 文件共享支持’未开启&#xff0c;启用后重启电脑就可以了。 具体步骤&#xff1a; 控制面板 - 程序和功能 - 启用或关闭Windows功能 打勾…

PhpWord的autoload.php文件及目录的生成方式

在github上下载的压缩版PhpWord类库&#xff0c;bootstrap需要用到wendor下的autoload.php&#xff0c;但发现目录里面没有该文件。百度一下&#xff0c;发现需要通过composer进行生成该目录及文件。 1、安装composer 我是在windows系统下办公的&#xff0c;所以直接下载comp…