当前位置:网站首页>canvas图像阴影处理
canvas图像阴影处理
2022-08-11 09:02:00 【好奇的菜鸟】
一、图像重叠
<!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>
边栏推荐
- 自定义卷积核的分组转置卷积如何实现?
- gRPC系列(一) 什么是RPC?
- Nuget can't find the package problem
- Kotlin算法入门求回文数数算法优化二数字生成规则
- UNITY gameobject代码中setacvtive(false)与面板中直接去掉勾 效果不一样
- 谁能解答?从mysql的binlog读取数据到kafka,但是数据类型有Insert,updata,
- 第一次因没有找到iframe元素而怀疑selenium4是不是有bug?
- 在软件工程领域,搞科研的这十年!
- QTableWidget 使用方法
- ImportError: /usr/local/cuda-11.2/lib64/libcublas.so.10: version `libcublas.so.10‘ not found
猜你喜欢
基于 VIVADO 的 AM 调制解调(3)仿真验证
Nuget can't find the package problem
企业服务器主机加固现状分析
dsu on tree(树上启发式合并)学习笔记
Rust从入门到精通06-函数
mysql数据查询因为查询的时间跨度过大导致cup爆满应该怎么办
tensorflow 基础操作1(tensor 基本属性 , 维度变换,数学运算)
Detailed Explanation of the Level 5 Test Center of the Chinese Institute of Electronics (1)-string type string
excel将数据按某一列值分组并绘制分组折线图
nodejs worker_threads的事件监听问题
随机推荐
仙人掌之歌——大规模高速扩张(1)
观察表情和面部,会发现他有焦虑和失眠的痕迹
mindspore 执行模型转换为310的mindir文件显示无LRN算子
中移链EOSJS实战使用
框架外的PHP读取.env文件(php5.6、7.3可用版)
Kotlin算法入门计算素数以及优化
opencv 制作趣图
基于 VIVADO 的 AM 调制解调(1)方案设计
tar 命令使用
2022年值得关注的NFT发展趋势
老干妈创始人陶华碧现身直播间,70岁“国民女神”拥抱直播电商
零基础创作专业wordpress网站12-设置标签栏图标(favicon)
单元测试系统化讲解之PowerMock
MySQL性能调优,必须掌握这一个工具!!!(1分钟系列)
nodejs worker_threads的事件监听问题
【系统梳理】微服务的注册和发现中心
Inventorying Four Entry-Level SSL Certificates
MySql的索引
阿里云OSS上传文件超时 探测工具排查方法
Essential C# scripting skills for Unity developers