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

html5canvas常用属性方法(介绍)-

本章给大家带来html5canvas常用属性方法(介绍),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
本章给大家带来html5 canvas常用属性方法(介绍),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

首先引入标签就不必说了。

其次就是得到canvas的2d环境了( var ctx = canvasDom.getContext('2d') )。

现在呢,你可能想画点什么东西。画东西之前你要确定好一些东西,比如:

 ctx.fillStyle:这是一个用来确定填充颜色的属性。(带fill都和填充有关)
ctx.strokeStyle:这是一个用来确定"笔路径"(就像是线条)的属性。(带stroke都和描线有关)
ctx.shadow++:这是有4个设置所画图形阴影的属性(shadowColor,shadowBlur,shadowOffsetX,shadowOffsetY),我不常用,略。
ctx.lineWidth:这是4个设置线条样式的属性(lineCap,lineJoin,lineWidth,miterLimit)中最常用的,设置线宽,值为带px的string。
ctx.font:这是设置文本()的字体大小和字体样式,值可以是"30px",也可以是"30px Microsoft yahei"。同时配合ctx.textAlign和ctx.baseline设置对齐位置和基线位置。然后通过ctx.filltext()或者ctx.strokeText()绘制文字,还有ctx.measureText()返回一个对象,里面包含文本的信息,比如width,height。

了解了上面这些基础属性后,你就可以画点什么了:

想要显示点什么东西,流程大概是先弄路径(路径是看不见的),然后再通过ctx.fill()或ctx.stroke来对路径进行填充或描线。

你可以用ctx.rect(x,y,width,height)或ctx.arc(x,y,radius,startAngle,endAngle,anticolorwise)先弄一个路径,然后在fill或者stroke。

当然矩形有ctx.fillRect()和ctx.strokeRect()直接弄一个可见的方形。(圆没有这两个方法)

最后再介绍一个黑板擦--ctx.clearRect(x,y,weight,height),用来清除该方框内的所有像素。

还有一个为了防止之前的路径干扰,可以在每次画之前都ctx.beginPath()来清掉之前的路径。

以上就是基本的canvas的使用,下面就来聊点高(yong)级(bu)点(shang)的。

矩形样式的渐变填充:

var grd = ctx.createLinearGradient(x0,y0,x1,y1);
grd.addColorStop(0,"black");
grd.addColorStop(1,"white");
ctx.fillstyle = grd;
ctx.fillRect(x,y,w,h);

这一趟下来相当于是先预定义了一个渐变样式(可填充或者描线),将样式设置好后进行填充或者描线。

还有createRadialGradient()配合addColorStop设置放射状的样式。

媒体(图片、视频、其他canvas)的填充:  

var img = imgDom;
var pat = ctx.createPattern(img,"repeat");

然后这个pat就可以给ctx.++Style,从而进行填充或者描线等。

其中pattern有四种:repeat(默认),repeat-x,repeat-y,no-repeat。

自定义路径:

利用ctx.moveTo(x,y);把路径起点移动到(x,y) ,然后配合lineTo(x,y),就可以得到路径,就可以描线显示出来。

当然如果你想填充,但是可能路径没有闭合,可以利用ctx.closePath()闭合路径,然后进行填充。

画布切割:

使用ctx.clip()可以根据当前已闭合的路径来剪切画布,被剪切的画布部分就不能被操作了。

可以通过ctx.save()对当前区域先进行保存,然后通过ctx.restore()进行恢复。

画圆弧:

画圆弧通过ctx.arcTo(x0,y0,x1,y1,radius);通过两点和半径确定弧线,来得到路径,然后根据需要填充或者描线。

判断点是否在路径内:

ctx.isPointInPath();返回布尔值,没啥好说的。

有一种曲线叫 贝塞尔:

  先用ctx.moveTo()移至起始点。

  ctx.quadraticCurveTo(c1x,c1y,edx,edy);利用起点和一个控制点加终点的贝塞尔曲线;

  ctx.beizierCurveTo(c1x,c1y,c2x,c2y,edx,edy);利用两个控制点绘制的贝塞尔曲线。

图形转换:

    ctx.scale(w,h);放大w>1就是宽度上放大,h就是高度上。

    ctx.rotate(r);r为弧度单位,如20度:20*Math.PI/180。顺时针。

    ctx.translate(x,y)设置画布上(0,0)的位置,(x,y)就是当前(0,0)的位置。

    ctx.transform(a,b,c,d,e,f);分别是水平缩放、水平倾斜、垂直倾斜、垂直缩放、水平位移、垂直位移。该属性会叠加,对下一个图形有效。

    ctx.setTransform(a,b,c,d,e,f);同上,该属性会重新定义一个transform,对下一个图形有效。

drawImage():

  ctx.drawImage(dom,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);除了dom外最多还可以传8个参数,传2个是定位图像(原尺寸),传4个是按大小定位图像,传8个是剪切后定位图像(分别是:剪切开始x,y,剪切大小w,h,定位位置x,y,大小w,h)。

  globalAipha属性:设置全局透明度。(已经画好的不受影响)。

  globalCompositeOperation 属性 设置上一个和下一个重叠区的层叠顺序,有"source-over","destination-over",哪个over,哪个在下面。

以上就是html5 canvas常用属性方法(介绍)的详细内容,更多请关注 第一PHP社区 其它相关文章!


推荐阅读
  • 本文探讨了如何通过最小生成树(MST)来计算严格次小生成树。在处理过程中,需特别注意所有边权重相等的情况,以避免错误。我们首先构建最小生成树,然后枚举每条非树边,检查其是否能形成更优的次小生成树。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 2023 ARM嵌入式系统全国技术巡讲旨在分享ARM公司在半导体知识产权(IP)领域的最新进展。作为全球领先的IP提供商,ARM在嵌入式处理器市场占据主导地位,其产品广泛应用于90%以上的嵌入式设备中。此次巡讲将邀请来自ARM、飞思卡尔以及华清远见教育集团的行业专家,共同探讨当前嵌入式系统的前沿技术和应用。 ... [详细]
  • 国内BI工具迎战国际巨头Tableau,稳步崛起
    尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 探讨一个老旧 PHP MySQL 系统中,时间戳字段不定期出现异常值的问题及其可能原因。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 郑州大学在211高校中的地位与排名解析
    本文将详细解读郑州大学作为一所位于河南省的211和双一流B类高校,在全国211高校中的地位与排名,帮助高三学生更好地了解这所知名学府的实力与发展前景。 ... [详细]
  • 优化ASM字节码操作:简化类转换与移除冗余指令
    本文探讨如何利用ASM框架进行字节码操作,以优化现有类的转换过程,简化复杂的转换逻辑,并移除不必要的加0操作。通过这些技术手段,可以显著提升代码性能和可维护性。 ... [详细]
author-avatar
默默-晶f
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有