[Canvas]用透明PNG图在背景上画前景能不遮挡背景
欲看动态效果请点击下载并用Chrome/Firefox浏览器打开index,html。
图例:


从效果可以明显的看到,五角星边缘和中心都没有对背景遮挡。
代码:
<!DOCTYPE html>
<html lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head>
<title>动态背景3 19.3.4 12:43 by:逆火狂飙 horn19782016@163.com</title>
<style>
#canvas{
background:#ffffff;
cursor:pointer;
margin-left:10px;
margin-top:10px;
-webkit-box-shadow:3px 3px 6px rgba(0,0,0,0.5);
-moz-box-shadow:3px 3px 6px rgba(0,0,0,0.5);
box-shadow:3px 3px 6px rgba(0,0,0,0.5);
}
#controls{
margin-top:10px;
margin-left:15px;
}
</style>
</head>
<body onload="init()">
<div id="controls">
<input id='animateBtn' type='button' value='运动'/>
</div>
<canvas id="canvas" width="1200px" height="562px" >
出现文字表示你的浏览器不支持HTML5
</canvas>
</body>
</html>
<script type="text/javascript">
<!--
var paused=true;
animateBtn.onclick=function(e){
paused=! paused;
if(paused){
animateBtn.value="运动";
}else{
animateBtn.value="暂停";
window.requestAnimationFrame(animate);
}
}
var ctx;// 绘图环境
var bg;// 背景
var icon1;
var icon2;
var bgOffset;
var bgVelocity;
function init(){
// init Canvas
var canvas=document.getElementById('canvas');
canvas.width=1200;
canvas.height=562;
ctx=canvas.getContext('2d');
// init varialbles
bg=new Image();
bg.src="greenBG.jpg";
icon1=new Image();
icon1.src="fiveStar1.png";
icon2=new Image();
icon2.src="fiveStar2.png";
bgOffset=0;
bgVelocity=10;
};
function update(){
}
var index=0;
function draw(){
ctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height);
bgOffset+=bgVelocity;
if(bgOffset>ctx.canvas.width){
bgOffset=0;
}
ctx.drawImage(bg,bgOffset,0,ctx.canvas.width-bgOffset,canvas.height,0,0,ctx.canvas.width-bgOffset,canvas.height);
ctx.drawImage(bg,0,0,bgOffset,canvas.height,ctx.canvas.width-bgOffset,0,bgOffset,canvas.height);
index++;
if(index>100){
index=0;
}
if(index % 2 ==0){
ctx.drawImage(icon1,20,60);
}else{
ctx.drawImage(icon2,20,60);
}
}
function animate(){
if(!paused){
update();
draw();
setTimeout( function(){
window.requestAnimationFrame(animate); /// 让浏览器自行决定帧速率
}, 0.20 * 1000 );// 延时执行
}
}
//-->
</script>
2019年3月4日13点47分
[Canvas]用透明PNG图在背景上画前景能不遮挡背景的更多相关文章
- 相机拍的图,电脑上画的图,word里的文字,电脑屏幕,手机屏幕,相机屏幕显示大小一切的一切都搞明白了!
相机拍的图,电脑上画的图,word里的文字,电脑屏幕,手机屏幕,相机屏幕显示大小一切的一切都搞明白了! 先说图片X×dpi=点数dotX是图片实际尺寸,简单点,我们只算图片的高吧,比如说拍了张图片14 ...
- 在MPAndroidChart库K线图的基础上画均线
CombinedChart 可以直接使用MPAndroidChart库里面提供的CombinedChart实现组合图形 Demo:CombinedChartDemo ------分割线(如果想在一个图 ...
- canvas上画出坐标集合,并标记新坐标,背景支持放大缩小拖动功能
写在前面:项目需求,用户上传一个区位的平面图片,用户可以在图片上添加新的相机位置,并且展示之前已绑定的相机坐标位置,图片支持放大缩小&拖动的功能.新增坐标,页面展示相对canvas定位,保存时 ...
- CSS实现背景透明而背景上的文字不透明完美解决
在我们设计制作一些网页的时候可能会用到半透明的效果,首先我们可能会想到用PNG图片处理,当然这是一个不错的办法,唯一的兼容性问题就是ie6 下的BUG,但这也不困难,加上一段js处理就行了.但假如我们 ...
- 如何让窗口控件半透明(控件在Paint自己时,首先向主窗口询问,获取主窗口上控件所在区域的背景图)
在网上关于窗口视觉效果,有2个问题被问得最多:第一个是如何让窗口边框有阴影效果?第二个是如何让窗口控件有半透明效果? 对于第一个问题,我们的答案是用双层窗口模拟或是用Layered Window.在X ...
- CSS实现背景透明而背景上的文字不透明
在我们设计制作一些网页的时候可能会用到半透明的效果,首先我们可能会想到用PNG图片处理,当然这是一个不错的办法,唯一的兼容性问题就是ie6 下的BUG,但这也不困难,加上一段js处理就行了.但假如我们 ...
- CSS实现Div透明,而显示在上面的文字不透明,但也可看到显示在下面的图片内容
CSS实现Div透明,而显示在上面的文字不透明,但也可看到显示在下面的图片内容,DiV透明其实挺简单,主要是为background定义opacity属性,一般这个是最大值是1,数值越接近1,则越不透明 ...
- canvas学习之折线图
接着上一张柱状图讲,我们是使用折线图: import {canvasPoint} from '../../assets/js/canvas';import {basicInfo,histogramMo ...
- 封装构造函数,用canvas写饼状图和柱状图
封装构造函数,用canvas写饼状图和柱状图 封装函数 // 场景 function XDLScence( options ) { this.stage = options.stage; //执行场景 ...
随机推荐
- oracle定时任务的编写及查看删除
declare jobno number; begin dbms_job.submit( jobno,--定时器ID,系统自动获得 'PRC_INSERT;', --what执行的过程名 sysdat ...
- python脚本后台执行
在Linux中,可以使用nohup将脚本放置后台运行,如下: nohup python myscript.py params1 > nohup.out 2>&1 & 1 但 ...
- Flex Viewer(二) 体系结构
一.概述 在上一篇文章<深入浅出Flex Viewer (一)——概述>中,笔者对Flex Viewer用于构建以地图为中心的富客户端(RIA)应用的原型的功能和价值做了简要地介绍.在本文 ...
- 集群服务器下使用SpringBoot @Scheduled注解定时任务
原文:https://blog.csdn.net/huyang1990/article/details/78551578 SpringBoot提供了 Schedule模块完美支持定时任务的执行 在实际 ...
- Android 开机画面和wallpaper总结
Android 开机画面和wallpaper总结 1 kernel的开机画面修改 1.图片需求:图片格式:png图片大小:1024x600(具体示lcd分辨率而定). 2.转换图片png图片. 假设 ...
- 【GitLab】【GitHub】GitLab和GitHub的双向同步
有这种需求,需要GitLab上的现有代码库,同步到GitHub上. 又有一种需求,需要将GitHub上的代码库,同步到gitlab上. 一.GitLab上的代码库,自动同步到GitHub上 大致需要三 ...
- 冰川时代5:星际碰撞Ice Age: Collision Course迅雷下载
影片讲述松鼠奎特为了追松果,偶然引发了宇宙事件,改变并威胁着冰川时代的世界.为了拯救自己,话唠树懒希德.猛犸象曼尼.剑齿虎迪亚哥,以及别的动物群族必须离开家园,踏上了他们充满喜剧色彩的冒险旅程,他们来 ...
- 双面女间谍第一至五季/全集Alias迅雷下载
本季第一至五季 Alias Season (2001-2005)看点:<双面女间谍>她在CIA拥有双重身份,是个美貌矫健的年轻女间谍,一个性感的女007.但在第一季中,讲述更多的却是她在间 ...
- Android热修复技术总结
https://blog.csdn.net/xiangzhihong8/article/details/77718004 插件化和热修复技术是Android开发中比较高级的知识点,是中级开发人员通向高 ...
- eclipse的块选择模式
第一步:Alt+shift+a打开Toggle Block Selection Mode(块选择模式开关) 第二步:点击Toggle Block Selection 第三步:选择多行,同时编辑