gee*_*ter 14 javascript html5 animation canvas html5-canvas
我试图在图像背景上绘制一条线 - 在HTML5 Canvas中.但是,总是在图像后面绘制线条.实际上,首先绘制线条,然后绘制图片 - 无论我如何调用函数.
如何将线条置于图像顶部?
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
context.clearRect(0, 0, canvas.width, canvas.height);
drawbackground(canvas, context);
drawlines(canvas, context);
function drawbackground(canvas, context){
var imagePaper = new Image();
imagePaper.onload = function(){
context.drawImage(imagePaper,100, 20, 500,500);
};
imagePaper.src = "images/main_timerand3papers.png";
}
function drawlines(canvas, context){
context.beginPath();
context.moveTo(188, 130);
context.bezierCurveTo(140, 10, 388, 10, 388, 170);
context.lineWidth = 10;
// line color
context.strokeStyle = "black";
context.stroke();
}
Run Code Online (Sandbox Code Playgroud)
Cha*_*ngo 16
完全未经测试的代码,但你尝试过类似的东西吗?
function drawbackground(canvas, context, onload){
var imagePaper = new Image();
imagePaper.onload = function(){
context.drawImage(imagePaper,100, 20, 500,500);
onload(canvas, context);
};
imagePaper.src = "images/main_timerand3papers.png";
}
Run Code Online (Sandbox Code Playgroud)
然后调用这样的方法......
drawbackground(canvas, context, drawlines);
Run Code Online (Sandbox Code Playgroud)
为了提高效率,假设您要对此行或多行进行多次重绘,则将background-image画布的CSS设置为您的图像.
<canvas style="background-image:url('images/main_timerand3papers.png');"></canvas>
Run Code Online (Sandbox Code Playgroud)
将您的图像onload更改为以下内容:
imagePaper.onload = function () {
context.drawImage( imagePaper, 100, 20, 500, 500 );
drawLines( canvas, context );
};
Run Code Online (Sandbox Code Playgroud)
然后确保删除之前的调用drawLines.
这个解决方案的重要之处在于,onload函数将在未来的某个时间执行,而drawLines函数会立即执行.您必须始终小心如何构建回调,尤其是在嵌套回调时.
| 归档时间: |
|
| 查看次数: |
31925 次 |
| 最近记录: |