canvas图像阴影处理

简介: canvas图像阴影处理

一、图像重叠

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<!--<canvas id="myCanvas"></canvas>-->
<script>
    let gco = new Array();
    //目标图像顶部显示源图像
    gco.push("source-atop");
    //目标图像内部显示源图像
    gco.push("source-in");
    //目标图像之外显示源图像
    gco.push("source-out");
    //目标图像上显示源图像
    gco.push("source-over");
    //源图像顶部显示目标图像
    gco.push("destination-atop");
    //源图像内部显示目标图像
    gco.push("destination-in");
    //源图像外部显示目标图像
    gco.push("destination-out");
    //源图像上显示目标图像
    gco.push("destination-over");
    //显示源图像+目标图像
    gco.push("lighter");
    //显示源图像,忽略目标图像
    gco.push("copy");
    //使用异或,操作源图像与目标图像组合
    gco.push("xor");
    for (var n = 0; n < gco.length; n++) {
        document.write("<div id='p_" + n + "' style='float:left;'>" + gco[n] + ":<br>");
        var c = document.createElement("canvas");
        c.width = 120;
        c.height = 100;
        document.getElementById("p_" + n).appendChild(c);
        var ctx = c.getContext("2d");
        ctx.fillStyle = "blue";
        //绘制蓝色矩形,目标图像
        ctx.fillRect(10, 10, 50, 50);
        //如何将源图像绘制到目标图像,源图像=打算绘制的图像,目标图像=已经存在图像
        ctx.globalCompositeOperation = gco[n];
        ctx.beginPath();
        ctx.fillStyle = "red";
        //绘制红色圆,源图像
        ctx.arc(50, 50, 30, 0, 2 * Math.PI);
        ctx.fill();
        document.write("</div>")
    }
</script>
</body>
 
</html>

二、图像阴影

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>canvas</title>
</head>
<body>
<canvas id="myCanvas"></canvas>
</body>
<script>
<!--    获取元素-->
    var c=document.getElementById("myCanvas");
    //获取canvs上下文
    var ctx=c.getContext("2d");
    //设置阴影模糊级数
    ctx.shadowBlur=10;
    //设置X轴偏移量
    ctx.shadowOffsetX=20;
    //设置Y轴偏移量
    ctx.shadowOffsetY=16;
    //设置阴影颜色
    ctx.shadowColor="black";
    ctx.fillStyle="red";
    ctx.fillRect(20,20,100,80);
</script>
 
</html>

三、绘制五角星

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>canvas</title>
</head>
<body onload="draw('myCanvas')">
<canvas id="myCanvas" width="500" height="500"></canvas>
</body>
<script>
 
 
    function draw(id) {
        var c = document.getElementById(id);
        //获取canvs上下文
        var ctx = c.getContext("2d");
        //设置填充颜色
        ctx.fillStyle = "#eeeeef";
        //绘制矩形
        ctx.fillRect(0, 0, 500, 500);
        //设置阴影偏移量
        ctx.shadowOffsetX = 20;
        ctx.shadowOffsetY = 10;
        //设置阴影颜色
        ctx.shadowColor = 'rgba(100,100,100,0.5)';
        //设置阴影模糊度
        ctx.shadowBlur = 3.5;
        //设置绘制偏移量
        ctx.translate(0, 50);
        for (var i = 0; i < 3; i++) {
            ctx.translate(100, 100);
            createStart(ctx);
            ctx.fill();
        }
        //绘制五角星
        function createStart(ctx) {
            var dx=100;
            var dy=0;
            var s=50;
            ctx.beginPath();
            ctx.fillStyle='rgba(255,0,0,0.5)';
            //将360度分为5等份
            var dig=4*Math.PI/5;
            for (var i = 0; i < 5; i++) {
                var x=Math.sin(i*dig);
                var y=Math.cos(i*dig);
                //绘制直线
                ctx.lineTo(dx+x*s,dy+y*s);
            }
            //100 50
            //40 129.38926261462365 -40.450849718747364
            //40 52.44717418524232 15.450849718747362
            //40 147.55282581475768 15.450849718747387
            //40 70.61073738537635 -40.450849718747385
            ctx.closePath();
        }
    }
 
</script>
 
</html>

相关文章
|
6月前
Echarts线性渐变、径向渐变、纹理填充
Echarts线性渐变、径向渐变、纹理填充
|
4月前
|
前端开发
Canvas绘画之文本缩放并旋转
Canvas绘画之文本缩放并旋转
|
4月前
|
前端开发
|
6月前
|
前端开发
canvas详解04-绘制文字
canvas详解04-绘制文字
78 2
canvas详解04-绘制文字
|
6月前
|
存储 前端开发
canvas详解05-变形
canvas详解05-变形
73 2
|
6月前
|
前端开发 API
canvas详解03-绘制图像和视频
canvas详解03-绘制图像和视频
84 1
|
6月前
|
前端开发
canvas详解07-裁剪
canvas详解07-裁剪
56 1
|
6月前
|
存储 前端开发 索引
canvas详解09-像素操作
canvas详解09-像素操作
129 1
|
存储 前端开发 算法
canvas 处理图像(下)
canvas 处理图像(下)
canvas 处理图像(下)
|
前端开发
canvas渐变
canvas渐变
122 1
canvas渐变