当前位置: 首页 > news >正文

【Canvas技法】蓝底金字北岛诗节选(径向渐变色、文字阴影示例)

【效果图】

【代码】

<!DOCTYPE html>
<html lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head><title>北岛诗选</title><style type="text/css">.centerlize{margin:0 auto;width:1200px;}</style></head><body οnlοad="init();"><div class="centerlize"><canvas id="myCanvas" width="12px" height="12px" style="border:1px dotted black;">如果看到这段文字说您的浏览器尚不支持HTML5 Canvas,请更换浏览器再试.</canvas><img id="myImg" src="125.png" style="display:none;"/></div></body>
</html>
<script type="text/javascript">
<!--
/*****************************************************************
* 将全体代码(从<!DOCTYPE到script>)拷贝下来,粘贴到文本编辑器中,
* 另存为.html文件,再用chrome浏览器打开,就能看到实现效果。
******************************************************************/// canvas的绘图环境
var ctx;// 高宽
const WIDTH=312;
const HEIGHT=512;// 舞台对象
var stage;//-------------------------------
// 初始化
//-------------------------------
function init(){// 获得canvas对象var canvas=document.getElementById('myCanvas');  canvas.width=WIDTH;canvas.height=HEIGHT;// 初始化canvas的绘图环境ctx=canvas.getContext('2d');  ctx.translate(WIDTH/2,HEIGHT/2);// 原点平移到画布中央// 准备stage=new Stage();    stage.init();// 开幕animate();
}// 播放动画
function animate(){    stage.update();    stage.paintBg(ctx);stage.paintFg(ctx);     // 循环if(true){window.requestAnimationFrame(animate);   }
}// 舞台类
function Stage(){// 初始化this.init=function(){}// 更新this.update=function(){}// 画背景this.paintBg=function(ctx){ctx.clearRect(-WIDTH/2,-HEIGHT/2,WIDTH,HEIGHT);// 清屏    // 底色var lgrd=ctx.createLinearGradient(-WIDTH/2,-HEIGHT/2,WIDTH,HEIGHT);lgrd.addColorStop(0,"rgb(0,117,205)");lgrd.addColorStop(1,"rgb(2,54,137)");ctx.fillStyle=lgrd;ctx.fillRect(-WIDTH/2,-HEIGHT/2,WIDTH,HEIGHT);ctx.save();ctx.textBaseline="bottom";        ctx.font = "18px 宋体";ctx.fillStyle="white";ctx.textAlign="center";ctx.fillText("《结局或开始--献给遇罗克》节选",-9,-190);ctx.save();ctx.shadowColor = 'black';ctx.shadowOffsetX = 2;ctx.shadowOffsetY = 2;ctx.shadowBlur = 5;ctx.textAlign="left";ctx.font = "36px 仿宋";ctx.fillStyle="rgb(255,245,179)";var arr=["以太阳的名义","黑暗公开地掠夺","沉默依然","是东方的故事","人民","在古老的壁画上","默默地永生","默默地死去",];for(var i=0;i<arr.length;i++){ctx.fillText(arr[i],-124,i*40-120);}ctx.restore();ctx.textBaseline="bottom";        ctx.font = "18px 宋体";ctx.fillStyle="white";ctx.textAlign="right";ctx.fillText("作者:北岛",120,210);ctx.restore();// 版权ctx.textBaseline="bottom";ctx.textAlign="center";ctx.font = "8px consolas";ctx.fillStyle="white";ctx.fillText("逆火原创",WIDTH/2-40,HEIGHT/2-10);}// 画前景this.paintFg=function(ctx){}
}/*--------------------------------------------------
老鼠偷了人类的大米,人们说它狡猾;
人类偷了蜜蜂的蜂蜜,却说它很勤劳。
---------------------------------------------------*/
//-->
</script>

END

http://www.lryc.cn/news/339524.html

相关文章:

  • 【大语言模型】基础:TF-IDF
  • [开发日志系列]PDF图书在线系统20240415
  • 蓝桥杯 — — 纯质数
  • OpenCV基本图像处理操作(三)——图像轮廓
  • 比特币突然暴跌
  • 使用SpeechRecognition和vosk处理ASR
  • 【Go】通道:缓冲通道和非缓冲通道
  • Java中数组的使用
  • CAP5_Monday
  • 科大讯飞星火开源大模型iFlytekSpark-13B GPU版部署方法
  • SpringBoot基于RabbitMQ实现消息延迟队列方案
  • Go语言使用标准库时常见错误
  • UE5不打包启用像素流 ubuntu22.04
  • Redis 常用数据类型常用命令和应用场景
  • ins视频批量下载,instagram批量爬取视频信息
  • Canvas图形编辑器-数据结构与History(undo/redo)
  • 阿里云Centos7下编译glibc
  • UE5数字孪生系列笔记(四)
  • 品牌故事化:Kompas.ai如何塑造深刻的品牌形象
  • 5g和2.4g频段有什么区别
  • 交通管理在线服务系统|基于Springboot的交通管理系统设计与实现(源码+数据库+文档)
  • konva.js 工具类
  • php未能在vscode识别?
  • 解读MongoDB官方文档获取mongo7.0版本的安装步骤与基本使用
  • 【数据结构|C语言版】顺序表
  • Unity类银河恶魔城学习记录12-17 p139 In game UI源代码
  • MongoDB学习【一】MongoDB简介和部署
  • html 引入vue Element ui 的方式
  • 曾经备受追捧的海景房,为何如今却没人要了?
  • [docker] 镜像部分补充