当前位置:网站首页>《canvas》之第9章 渐变与阴影
《canvas》之第9章 渐变与阴影
2022-06-29 13:55:00 【yxqq378287007】
第9章 渐变和阴影
9.1 线性渐变
沿一条直接进行的渐变。
var gnt = cxt.createLinearGradient(x1, y1, x2, y2);
gnt.addColorStop(value1, color1);
gnt.addColorStop(value2, color2);
cxt.fillStyle = gnt;
cxt.fill(); //fillRect()或fillText()
- 图形渐变
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> </title>
<meta charset="utf-8" />
<script type="text/javascript"> function $$(id) {
return document.getElementById(id); } window.onload = function () {
var cnv = $$("canvas"); var cxt = cnv.getContext("2d"); var gnt = cxt.createLinearGradient(0, 150, 200, 150); gnt.addColorStop(0, "HotPink"); gnt.addColorStop(1, "white"); cxt.fillStyle = gnt; cxt.fillRect(0, 0, 200, 150); } </script>
</head>
<body>
<canvas id="canvas" width="200" height="150" style="border:1px dashed gray;"></canvas>
</body>
</html>
- 文字渐变
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta charset="utf-8" />
<script type="text/javascript"> function $$(id) {
return document.getElementById(id); } window.onload = function () {
var cnv = $$("canvas"); var cxt = cnv.getContext("2d"); var text = "绿叶学习网"; cxt.font = "bold 50px 微软雅黑"; var gnt = cxt.createLinearGradient(0, 75, 200, 75); gnt.addColorStop(0, "HotPink"); gnt.addColorStop(1, "LightSkyBlue"); cxt.fillStyle = gnt; cxt.fillText(text, 10, 90); } </script>
</head>
<body>
<canvas id="canvas" width="270" height="150" style="border:1px dashed gray"></canvas>
</body>
</html>
9.2 径向渐变
圆形或椭圆形渐变,颜色从一个起点向所有方向渐变。
var gnt = cxt.createRadialGradient(x1, y1, r1, x2, y2, r2);
gnt.addColorStop(value1, color1);
gnt.addColorStop(value2, color2);
cxt.fillStyle = gnt;
cxt.fill(); //fillRect()或fillText()
- 蛋黄渐变
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta charset="utf-8" />
<script type="text/javascript"> function $$(id) {
return document.getElementById(id); } window.onload = function () {
var cnv = $$("canvas"); var cxt = cnv.getContext("2d"); //画圆 cxt.beginPath(); cxt.arc(80, 80, 50, 0, Math.PI * 2, true); cxt.closePath(); //渐变 var gnt = cxt.createRadialGradient(100, 60, 10, 80, 80, 50); gnt.addColorStop(0, "white"); gnt.addColorStop(0.9, "orange"); gnt.addColorStop(1, "rgba(0,0,0,0)"); //填充 cxt.fillStyle = gnt; cxt.fill(); } </script>
</head>
<body>
<canvas id="canvas" width="200" height="150" style="border:1px dashed gray"></canvas>
</body>
</html>
- 多种颜色径向渐变
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta charset="utf-8" />
<script type="text/javascript"> function $$(id) {
return document.getElementById(id); } window.onload = function () {
var cnv = $$("canvas"); var cxt = cnv.getContext("2d"); gradient = cxt.createRadialGradient(60, 60, 0, 60, 60, 60); gradient.addColorStop("0", "magenta"); gradient.addColorStop("0.25", "blue"); gradient.addColorStop("0.50", "green"); gradient.addColorStop("0.75", "yellow"); gradient.addColorStop("1.0", "HotPink"); cxt.fillStyle = gradient; cxt.fillRect(0, 0, 120, 120); } </script>
</head>
<body>
<canvas id="canvas" width="200" height="150" style="border:1px dashed gray;"></canvas>
</body>
</html>
- 多种颜色径向渐变(动态图)
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta charset="utf-8" />
<script type="text/javascript"> function $$(id) {
return document.getElementById(id); } window.onload = function () {
var cnv = $$("canvas"); var cxt = cnv.getContext("2d"); var i = 0; setInterval(function () {
gradient = cxt.createRadialGradient(60, 60, 0, 60, 60, 60); gradient.addColorStop(i * 0, "magenta"); gradient.addColorStop(i * 0.25, "blue"); gradient.addColorStop(i * 0.50, "green"); gradient.addColorStop(i * 0.75, "yellow"); gradient.addColorStop(i * 1.0, "HotPink"); cxt.fillStyle = gradient; i = i + 0.1; if (i >= 1) {
//超过颜色点值后,自动归0 i = 0; } cxt.fillRect(0, 0, 120, 120); }, 50); } </script>
</head>
<body>
<canvas id="canvas" width="200" height="150" style="border:1px dashed gray;"></canvas>
</body>
</html>
9.3 阴影
- 阴影属性
| 属性 | 说明 |
|---|---|
| shadowOffsetX | 阴影与图形的水平偏移,默认0 |
| shadowOffsetY | 阴影与图形的垂直偏移,默认0 |
| shadowColor | 阴影颜色,默认黑色 |
| shadowBlur | 阴影模糊值,默认0。越大,模糊度越强。 |
- 图形阴影
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta charset="utf-8" />
<script type="text/javascript"> function $$(id) {
return document.getElementById(id); } //定义绘制图形的函数 window.onload = function () {
var cnv = $$("canvas"); var cxt = cnv.getContext("2d"); //设置左上方向的阴影 cxt.shadowOffsetX = -5; cxt.shadowOffsetY = -5; cxt.shadowColor = "LightSkyBlue"; cxt.shadowBlur = 1; cxt.fillStyle = "HotPink"; cxt.fillRect(30, 30, 50, 50); //设置右下方向的阴影 cxt.shadowOffsetX = 5; cxt.shadowOffsetY = 5; cxt.shadowColor = "LightSkyBlue"; cxt.shadowBlur = 10; cxt.fillStyle = "HotPink"; cxt.fillRect(100, 30, 50, 50); } </script>
</head>
<body>
<canvas id="canvas" width="200" height="150" style="border:1px dashed gray;"></canvas>
</body>
</html>
- 文字阴影
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta charset="utf-8" />
<script type="text/javascript"> function $$(id) {
return document.getElementById(id); } window.onload = function () {
var cnv = $$("canvas"); var cxt = cnv.getContext("2d"); //定义文字 var text = "绿叶学习网"; cxt.font = "bold 60px 微软雅黑"; //定义阴影 cxt.shadowOffsetX = 5; cxt.shadowOffsetY = 5; cxt.shadowColor = "LightSkyBlue"; cxt.shadowBlur = 10; //填充文字 cxt.fillStyle = "HotPink"; cxt.fillText(text, 10, 90); } </script>
</head>
<body>
<canvas id="canvas" width="320" height="150" style="border:1px dashed gray"></canvas>
</body>
</html>
- 图片阴影
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta charset="utf-8" />
<script type="text/javascript"> function $$(id) {
return document.getElementById(id); } window.onload = function () {
var cnv = $$("canvas"); var cxt = cnv.getContext("2d"); //创建image对象 var image = new Image(); image.src = "images/princess.png"; image.onload = function () {
//定义阴影 cxt.shadowOffsetX = 5; cxt.shadowOffsetY = 5; cxt.shadowColor = "HotPink"; cxt.shadowBlur = 10; //cxt.fillRect(40, 15, 120, 120); cxt.drawImage(image, 40, 15); } } </script>
</head>
<body>
<canvas id="canvas" width="200" height="150" style="border:1px dashed gray;"></canvas>
</body>
</html>
- 4个方向的阴影效果
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta charset="utf-8" />
<script type="text/javascript"> function $$(id) {
return document.getElementById(id); } window.onload = function () {
var cnv = $$("canvas"); var cxt = cnv.getContext("2d"); //创建image对象 var image = new Image(); image.src = "images/princess.png"; image.onload = function () {
//定义阴影 //cxt.shadowOffsetX = 0; //cxt.shadowOffsetY = 0; cxt.shadowColor = "HotPink"; cxt.shadowBlur = 10; //cxt.fillRect(40, 15, 120, 120); cxt.drawImage(image, 40, 15); } } </script>
</head>
<body>
<canvas id="canvas" width="200" height="150" style="border:1px dashed gray;"></canvas>
</body>
</html>
边栏推荐
- 布隆过滤器Bloom Filter简介
- 深度学习的坎坷六十年
- Applet Wechat: un nouveau réseau exclusif de microgroupes de développement de Cloud
- 直觉与实现:Batch Normalization
- 微信小程序:全新獨家雲開發微群人脈
- Redis的缓存雪崩、缓存击穿、缓存穿透与缓存预热、缓存降级
- [high concurrency] 28000 words' summary of callable and future interview knowledge points. After reading it, I went directly to ByteDance. Forgive me for being a little drifting (middle)
- 【置顶】博客使用须知,公告板,留言板,关于博主
- Redis哨兵机制原理详解
- mysql函数和约束
猜你喜欢
随机推荐
Normalization layer of pytorch learning (batchnorm, layernorm, instancenorm, groupnorm) [easy to understand]
c语言入门教程–-6循环语句
内网穿透(nc)
Source code migration from X86 platform to Kunpeng platform based on Kunpeng development kit [play with Huawei cloud]
微信小程序:修复采集接口版云开发表情包
Interpretation of RESNET source code in mmdet +ghost module
【Qt 教程】QPushButton 按键和双击效果
Can Ruida futures open an account? Is it safe and reliable?
Wechat applet: repair collection interface version cloud development expression package
Tiktok's global short video dominance may be reversed by YouTube
28000 word summary of callable and future interview knowledge points. After reading it, I went directly to ByteDance. Forgive me for being a little floating (Part 2)
HTAP X 云原生: TiDB 加速释放数据价值,实现数据敏捷
[network bandwidth] Mbps & Mbps
Crazy digital collections, the next myth of making wealth?
unity吃豆人小游戏,迷宫实现
VQA不只需要图片,还需要外部知识!华盛顿大学&微软提出提出REVIVE,用GPT-3和Wikidata来辅助回答问题!...
Why is redis so fast? Is redis single threaded or multi-threaded?
[document translation] camouflaged object detection
一次mysql的.ibd文件过大处理过程记录
goby如何导出扫描结果









