• canvas学习之路(二)特殊绘图功能及实例


    作天的canvas学习有点艰难,涉及到vedio和动画事件,知识点比较多,虽然之前有学过css和H5动画功能,但是忘得真是一干二净,乘着这个机会再复习了一下,所以总结拖到今天。

    (一)clip() 从原始画布中剪切任意形状和尺寸,只有剪切部分是可见的,之后所有的绘图都被该区域。

    1.png
    使用clip()之后,绘制的正方形只有在被剪切区域的部分才会显示。上述代码效果如下图:
    2.png

    (二)filltext()画布文本设置功能

    语法:fillText(text,X,Y,maxwidth)其中第一个参数代表文本坐标,第二个第三个参数代表绘图文本开始时的坐标,maxwidth代表最大文本宽度。

    设置文本格式有以下几种功能:如下图(具体解释我在代码中已给出)

    3.png
    代码效果如下图:
    4.png
    如果我们要给字体加上阴影效果,怎么办?

    5.png
    效果如下图6:

    6.png

    strokeText()与fillText()的差别
    前者绘制的文本没有填色(暂时也没有发现可以给strokeText()内的字体填色的功能,连线条宽度也无法通过linewidth()设置),后者有填色。

    7.png
    *(这里要注意代码中ctx.save()和ctx.restore()的用法。可参考canvas学习之路(一))
    效果如下:

    8.png

    (三)globalCompositeOperation

    这个功能比较强大,理解起来跟数学中的差集、补集等功能差不多。
    9.jpg]
    具体用法可以参看w3c,上面讲得很详细,此处不再赘言。

    (四)createLinearGradient()创建线性渐变对象

    语法:createLinearGradient(X0,Y0,X1,Y1)
    (X0,Y0)渐变起始点,(X1,Y1)渐变结束点
    createLinearGradient()通常与addColorStop()结合使用,后者用来表示对象的颜色和位置。
    语法:addColorStop(stop,color)stop的值在0~1之间,表示位置,color则表示该位置的颜色。

    10.jpg
    效果如下:

    11.jpg

    (五)createRadialGradient();径向渐变

    createRadialGradient(x1,y1,radius1,x2,y2,radius2);前面三个参数表示起始圆的圆心及半径,后面三个参数表示结束圆的圆心及半径。

    12.jpg

    13.jpg

    (五)createPattern();在指定的方向上重复指定的元素。

    语法:createPattern(img,repeat|repeat-X|repeat-Y|no-repeat)

    14.jpg
    重复直到填满整个指定区域为止。

    15.jpg
    效果如下:
    16.jpg

    (六)drawImage()用于将图片添加到画布的指定的位置。

    1. 语法一:ctx.drawImage(img,x,y,w,h)
    2. 语法二:ctx.drawImage(img,sx,sy,sw,sh,dx,dy,dw,dh);

    ctx.drawImage(img,x,y,w,h)中(x,y,w,h)同fillRect(x,y,w,h)里的四个参数含义完全一样。ctx.drawImage(img,sx,sy,sw,sh,dx,dy,dw,dh)中(dx,dy,dw,dh)的含义与语法(一)中的一样。(sx,sy,sw,sh)则是对图片的一个裁切,图片的左上角为(0,0)的点,(sx,sy)是指从图片的某个位置开始裁切,(sw,sh)则是指裁切的宽度和高度。

  • 相关阅读:
    测试驱动开发的意义何在
    Web自动化测试模式page object的小利器:gizmo
    在NANT使用Nunit2标签运行Nunit测试
    小试牛刀 Ruby on Rails
    敏捷回顾会议的思考
    ThoughtWorks技术校园行第二波 课程资料 CleanCode&DirtyCode
    从git merge 和 git rebase想到……
    Ruby中的深浅拷贝
    NUnit Extension小介绍
    如何写好的测试呢?
  • 原文地址:https://www.cnblogs.com/jiandanshishu/p/12953318.html
Copyright © 2020-2023  润新知