为了账号安全,请及时绑定邮箱和手机立即绑定

canvas中drawImage(),先绘制一张大图,后绘制一张小图。小图不会出现。求解

canvas中drawImage(),先绘制一张大图,后绘制一张小图。小图不会出现。求解

qq_kathie周洁_0 2016-12-15 17:16:52
var girl = new  Image(); var star = new  Image(); function init(){ can=document.getElementById('girl'); ctx=can.getContext('2d'); //绘制canvas drawBgd(); girl.src="images/girl.jpg"; star.src="images/star.png"; drawGirl(); drawStar(); } //绘制canvas背景 function drawBgd(){ ctx.beginPath(); ctx.fillStyle="#1B6D85"; ctx.fillRect(0,0,w,h); }; //绘制女孩 function drawGirl(){ girl.onload=function(){ ctx.drawImage(girl,100,100,400,200); } }; //绘制星星 function drawStar(){ star.onload=function(){ ctx.drawImage(star,200,200,49,7); } }; init()但在chrome中浏览,星星的图片出不来,在网页浏览时,只有刷新才能一闪而过;但当两个图片不重合的时候,星星就可以正常显示。请问如何才能让两张图片同时显示(小图在大图的上面)?
查看完整描述

1 回答

?
叶0528

TA贡献15条经验 获得超10个赞

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>girl</title>
<script>
window.onload=function(){
previewHandler();
}

function previewHandler(){

var canvas = document.getElementById("girl");
var context = canvas.getContext("2d");
fillBackgroundColor(canvas,context);

drawGirl(canvas, context);
drawStar(canvas, context);
}


function fillBackgroundColor(canvas,context){
var bgColor = 'black';
context.fillStyle=bgColor;
context.fillRect(0,0,canvas.width,canvas.height);

}


function drawGirl(canvas,context){
var girl = new Image();
girl.src = "girl.jpg";
girl.onload = function(){
context.drawImage(girl,100,100,400,200);
}

}

function drawStar(canvas,context){
var star = new Image();
star.src = "star.png";
star.onload = function(){
context.drawImage(star,200,200,49,49);
}

}

function makeImage(){
var canvas = document.getElementById("girl");
canvas.onclick = function(){
window.location = canvas.toDataURL("image/png");
};
}

</script>
</head>
<body>
<h1>girl</h1>
<canvas id="girl" width="600" height="300">
<p>Please upgrade your browser to use canvas!</p>
</canvas>

</body>
</html>


查看完整回答
反对 回复 2016-12-17
  • 1 回答
  • 1 关注
  • 1978 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信