热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

H5_Node5_Canvas2_图形组合方式&图像的处理

-->图形组合方式十一种图形组合效果-->图像的处理绘制、保存、恢复、输出、交互----------------------------------------
-->图形组合方式
   十一种图形组合效果
-->图像的处理
   绘制、保存、恢复、输出、交互

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一、图形组合方式
图形组合:
新画图形是压在原图形上或者原图覆盖新图形等等一系列新图与原图形的结合方式叫做图形的组合,大概分为十一种方式。
比如:显示新图覆盖原图、或者只显示原图和新图相重叠部分等等。

globalCompositeOperation属性  控制图形的组合方式

这个属性归getContext(‘2d’)所创建的对象所有
globalCompositeOperation="type";
type的值:
source-over:默认值,表示新图覆盖在旧图之上
source-atop:只绘制旧图和重叠的部分,其他透明
source-in:只绘制新图的重叠部分,其他透明
source-out:只绘制新图,重叠部分和旧图透明
destination-over:表示旧图覆盖在新图之上
destination-atop:只绘制新图和重叠的部分,其他透明
destination-in:只绘制旧图的重叠部分,其他透明
destination-out:只绘制旧图,重叠部分和新图透明
lighter:旧图与新图都绘制,重叠部分混色处理
xor:旧图和新图重叠处做透明处理

copy:只绘制新图形,不绘制旧图形








	
	亲,别再用古董浏览器了
	!















-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

二、图像的处理


 1、绘制图像

    绘制图像:把图片绘制在画布上面
    drawImage(img,x,y)
    img:图片
    x:图片横坐标的起始值
    y:图片纵坐标的起始值

    绘制固定宽高的图像:
    drawImage(img,x,y,w,h)
    img:图片
    x:图片横坐标的起始值
    y:图片纵坐标的起始值
    w:在画布中图片显示的宽度
    h:在画布中图片显示的高度

    剪切图像,在画布上定位被剪切部分:
    drawImage(img,x,y,w,h,rx,ry,rw,rh)
    img:图片
    x、y:源图片的坐标
    w、h:在源图片上裁剪的宽、高--
    rx、ry:显示在画布中的坐标
    rw、rh:显示在画布中的宽、高







	
	亲,别再用古董浏览器了
	!


 2、图像在画布中的平铺
    createPattern(img,type)
    img:图片
    type:repeat整个画布平铺
               repeat-x/y在x/y轴方向上平铺
               no-repeat不平铺







	亲,别再用古董浏览器了
	!




 3、图像的裁剪(配合路径使用)
    clip()
配合路径使用,先绘制好路径,
    然后调用clip方法;

提示:一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内(不能访问画布上的其他区域)。







	亲,别再用古董浏览器了
	!




 4、像素处理
   getImageData(x,y,w,h):可以获取指定区域内
    的像素点的数据;
    x:canvas的x轴坐标    y:canvas的y轴坐标
    w:指定区域的宽度       h:指定区域的高度
    putImageData(imgdata,x,y):getImageData
    返回的像素数据点imgdata填充到画布上面,从
    x、y点开始填充;
PS: 服务器环境运行,不支持跨域







	亲,别再用古董浏览器了
	!






----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

5、图像的输出

canvas.toDataURL( type , args ):
为canvas的方法,用来返回一个url地址,将canvas画布转化为一张图像;
图像是基于Base64编码的 , 如果不指定两个参数,无参数调用该方法,转换的图像格式默认为png格式 。
type:图像格式,image/png  image/jpeg等
args:可选参数。例如,如果type为image/jpeg,则args可以是0和1之间的值,以指定图像的品质。
PS: 服务器环境运行,不支持跨域







	亲,别再用古董浏览器了
	!
	
	



6、其他方法
scale(w,h) 缩放当前绘图:
w: 缩放绘图的宽度   h: 缩放绘图的高度
rotate(angle) 旋转当前绘图
1°等于Math.PI/180    5°=5*Math.PI/180

translate(x,y) 重新映射画布上的 (0,0) 位置








	亲,别再用古董浏览器了
	!



7、save和restore方法
save()、restore():
绘制复杂图形必不可少的方法,分别用来保存、恢复canvas的状态,无参数;



---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三、canvas交互


 isPointInPath(x , y)方法 
    测试给定的坐标点是否位于当前路径之内  
    返回 true 或 false
    x : canvas的x轴坐标
    y : canvas的y轴坐标
    示例:
    if (ctx.isPointInPath(x , y)) { };
PS: isPointInPath方法只对当前路径有效







	





彩蛋:用图形组合写刮刮乐效果:








谢谢惠顾!

亲,别再用古董浏览器了 !





















































推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 一、什么是闭包?有什么作用什么是闭包闭包是定义在一个函数内部的函数,它可以访问父级函数的内部变量。当一个闭包被创建时,会关联一个作用域—— ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • 在C#中,使用关键字abstract来定义抽象类和抽象方法。抽象类是一种不能被实例化的类,它只提供部分实现,但可以被其他类继承并创建实例。抽象类可以用于类、方法、属性、索引器和事件。在一个类声明中使用abstract表示该类倾向于作为其他类的基类成员被标识为抽象,或者被包含在一个抽象类中,必须由其派生类实现。本文介绍了C#中抽象类和抽象方法的基础知识,并提供了一个示例代码。 ... [详细]
  • 【Vue基础】监听属性watch
    Vue监听属性是watch,我们可以通过watch来响应数据的变化。代码示例: ... [详细]
  • 用c语言实现线画、填充图元生成算法多边形_【游戏场景剔除】剔除算法综述...
    之前在做场景优化的过程中,看了不少论文和博客阐述不同剔除算法的原理和过程,自己参照着算法去实现了Hiz和软件剔除。一直想写一篇关于剔除算法的综述 ... [详细]
  • 第七章•Firewalld防火墙实战
    1、防火墙安全基本概述在CentOS7系统中集成了多款防火墙管理工具,默认启用的是firewalld(动态防火墙管理器)防火墙管理工具,Firewalld支持CLI(命令行)以及G ... [详细]
  • Iamtryingtoachievethearrowpointingupwards..iamtryingtoachieveitinmycssiamnotabl ... [详细]
author-avatar
Sunday老师
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有