美文网首页
canvas入门基础3 完结篇~

canvas入门基础3 完结篇~

作者: 于晓鱼 | 来源:发表于2017-01-23 21:03 被阅读0次

线性渐变

var linear= context.createLinearGradient(xStart,yStart,xEnd,yEnd)

线性渐变颜色linear.addColorStop(offset,color)

xstart:渐变开始点x坐标
ystart:渐变开始点y坐标
xEnd:渐变结束点x坐标
yEnd:渐变结束点y坐标
offset:设定的颜色离渐变结束点的偏移量(0~1)
color:绘制时要使用的颜色

var oC = document.querySelector('#c1');
var gd = oC.getContext('2d');
var linear = gd.createLinearGradient(300,100,400,500);
linear.addColorStop(0,'red');
linear.addColorStop(1,'aqua');
gd.fillStyle = linear;
gd.font = '100px 微软雅黑';
gd.fillText('于晓鱼',300,300);
Paste_Image.png

径向渐变

var rg=context.createRadialGradient(xStart,yStart,radiusStart,xEnd,yEnd,radiusEnd)

径向渐变 颜色rg.addColorStop(offset,color)

radiusStart:发散开始圆的半径
radiusEnd:发散结束圆的半径
(其它同上)
同心圆径向渐变小例子

           var canvas = document.getElementById('c1');
            var context = canvas.getContext('2d');
            var g1 = context.createRadialGradient(200, 150, 0, 200, 150, 100);
            g1.addColorStop(0.1, 'rgb(255,0,0)');
            g1.addColorStop(1, 'rgb(50,0,0)');
            context.fillStyle = g1;
            context.beginPath();
            context.arc(200, 150, 100, 0, Math.PI * 2, true);
            context.closePath();
            context.fill();
Paste_Image.png

给图形绘制阴影
context.shadowOffsetX :阴影的横向位移量(默认值为0)
context.shadowOffsetY :阴影的纵向位移量(默认值为0)
context.shadowColor :阴影的颜色
context.shadowBlur :阴影的模糊范围(值越大越模糊)

           var oC = document.querySelector('#c1');
            var context= oC.getContext('2d');
            context.shadowOffsetX = 10;
            context.shadowOffsetY = 10;
            context.shadowBlur = 20;
            context.shadowColor = 'red';
            context.fillStyle = 'black';
            context.fillRect(100,100,200,100);
Paste_Image.png

绘制图像

绘图: context.drawImage

1, context.drawImage(image,x,y)

    image:Image对象var img=new Image(); img.src="url(...)";

    x:绘制图像的x坐标

    y:绘制图像的y坐标

2, context.drawImage(image,x,y,w,h)

    image:Image对象var img=new Image(); img.src="url(...)";

    x:绘制图像的x坐标

    y:绘制图像的y坐标

    w:绘制图像的宽度

    h:绘制图像的高度

3, context.drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh):选取图像的一部分矩形区域进行绘制

    image:Image对象var img=new Image(); img.src="url(...)";

    sx:图像上的x坐标

    sy:图像上的y坐标

    sw:矩形区域的宽度

    sh:矩形区域的高度

    dx:画在canvas的x坐标

    dy:画在canvas的y坐标

    dw:画出来的宽度

    dh:画出来的高度

用第三个方法来写个小例子吧

            var oC = document.querySelector('#c1');
            var gd = oC.getContext('2d');
            var oImg = new Image();
            oImg.onload = function(){
                gd.drawImage(oImg,
                    0,198,136,153,
                    100,100,272,306
                );
            };

            oImg.src = '1.jpg';

原图

Paste_Image.png

选取后在画布上的效果

Paste_Image.png

像素处理:

获取像素颜色数组:

 var imagedata=context.getImageData(sx,sy,sw,sh)
sx:cavas的x轴坐标点

sy:canvas的y轴坐标点

sw:距离x的宽度

sh:距离y的高度

可以利用context.getImageData返回的一个像素颜色数组,顺序是所取像素范围的从左到右,从上到下,数组的元素是(所有图形,包括图片,和绘制的图形)每个像素的rgba
设置像素颜色

context.putImageData(imagedata,dx,dy,dirtyX,dirtyY,dirtyWidth,dirtyHeight) 
对imagedata数组中的各个像素的r、g、b、a值进行修改,再调用putImageData方法进行绘制

    imagedata:修改后的imagedata

    dx:重绘图像的起点横坐标(重绘的起点和原来的图像一致的话就会把原来的图形覆盖掉,看起来就像是原来的图像变成现在的图像一样)

    dy:重绘图像的起点纵坐标

    //以下可选参数,设置重绘的矩形范围,如果缺省,默认会重绘所有的imegedata

    dirtyX:矩形左上角x轴坐标

    dirtyY:矩形左上角y轴坐标

    dirtyWidth:矩形长度

    dirtyHeight:矩形高度

小例子:

           var oC = document.querySelector('#c1');
            var gd = oC.getContext('2d');
            var oImg = new Image();
            oImg.src = 'tu.jpg';
            oImg.onload = function(){
                gd.drawImage(oImg,100,20);
                var imagedata= gd.getImageData(0,0,oC.width,oC.height);
                var d = imagedata.data;
                for(var i = 0;i<d.length;i+=4){
                    d[i] = d[i+1]=d[i+2] = (d[i]+d[i+1]+d[i+2])/3;
                }
                gd.putImageData(imagedata,0,0);
            };
Paste_Image.png

本文如有错误,请及时留言给我纠正~

相关文章

  • canvas入门基础3 完结篇~

    线性渐变 线性渐变颜色linear.addColorStop(offset,color) xstart:渐变开始点...

  • HTML5中canvas使用

    1、Canvas基础 2、Canvas画直线 3、Canvas画矩形 4、Canvas画文字 5、Canvas画圆...

  • canvas 基础入门

    是什么 Canvas(画布)是在 HTML5 中新增的标签用于在网页实时生成图像,可以操作图像内容,是一个可以用 ...

  • canvas入门基础2

    继canvas入门基础1 _ 圆弧context.arc(x, y, radius, start,end, boo...

  • canvas

    canvas 入门 : w3cschool HTML 标签_w3cschoolhttps://www.w3cs...

  • Canvas入门3

    绘制弧度 基本概念角度:一个圆360度,一个半圆是180度弧度:一个圆2Π,一个半圆Π 角度转换弧度弧度 = 角度...

  • canvas基础入门实例

    核心思想 通过不断地刷新当前帧, 获得动画效果 canvas标签 canvas是html5的一个标签, 有两个属性...

  • canvas入门基础1

    canvas即一个H5的新标签,通过js来实现绘图的神奇功能。 注意,在这里我直接在行间设置了宽高,是因为若不设定...

  • Canvas基础3

    canvas样式阴影 线性渐变 渐变镜像 canvas背景 导出图片内容 像素级操作

  • canvas入门-小时钟

    canvas入门-小时钟

网友评论

      本文标题:canvas入门基础3 完结篇~

      本文链接:https://www.haomeiwen.com/subject/rnwabttx.html