【问题标题】:How to determine if Image is already drawn in HTML Canvas如何确定图像是否已经在 HTML Canvas 中绘制
【发布时间】:2015-11-09 03:50:59
【问题描述】:

假设我有一个图像 /site/image1.jpg 在将其绘制到画布上时会是这样的。

var image = new Image();
image.src = "/site/image1.jpg";
image.onload = function(){
    context.drawImage(image,x,y);
}

假设我的互联网连接速度很慢,我怎么知道图像已经在画布上绘制?

谢谢。

【问题讨论】:

  • 图片是否加载完毕,可以查看image.complete。但最好的解决方案是在 onload 事件中添加回调:image.onload = doTheNextOperations
  • 您需要创建一个具有bool 的自定义类。绘制完成后,您可以将bool 设置为true

标签: html canvas image-loading


【解决方案1】:

如果图像已被绘制,则要锻炼保持旗帜或标记图像。

var image = new Image();
image.src = "blah.foo";
image.drawn = false;  // Add a property to indicate if the image has been drawn
image.onload = function(){
    ctx.drawImage(image,0,0);
    image.drawn = true;  // flag it as drawn
}
// then later you if you want to know if its been drawn
if(image.drawn){
    console.log("Yes its been drawn.");
}

【讨论】:

  • 如果绘制操作发生在图像的加载时,那么只检查它是否被加载就足够了。 (image.complete 是一个布尔值)但是 IMO 这个问题揭示了代码设计中的一个问题,不应通过这种标志黑客来解决这个问题
猜你喜欢
  • 2019-09-20
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 2011-05-18
  • 1970-01-01
  • 2014-02-03
相关资源
最近更新 更多