【发布时间】:2014-10-31 07:06:22
【问题描述】:
我有一张图片,我想在上面画画。为此,我使用 jQuery 隐藏图像:
$("img").hide();
然后我创建一个画布并将其放在 html 中 ID 为 drawing 的同一 div 中。然后我将画布的背景设置为与我隐藏的图像的 img src 相同。这使它看起来像一个图像,但现在它实际上是一个以图像作为背景的画布。我这样做:
$('#drawing > canvas').css('background-image','url('+$(".image img").attr('src')+')');
context.canvas.width = $("img").width();
context.canvas.height = $("img").height();
我遇到的问题是,有时图像未显示在画布中,并且画布不是图像的大小。我认为这可能是因为一些加载问题。我怎样才能等待画布确定在背景中显示图像?谢谢
编辑:请注意,在 DOM 中,画布始终具有正确的 src。它只是不显示它
编辑 2:这是 JSfiddle。在这里,一切似乎都很好,但我的代码中还有很多事情要做,包括从服务器获取内容,所以那里的速度较慢。希望这可以帮助你们理解问题:http://jsfiddle.net/wL3ezLke/2/ 再次感谢
【问题讨论】:
-
$(".image img")和$("img")将类似于图像对象的数组。你必须得到一个src、width和height。使用$(selector).each()方法,或者更具体地使用您的jQuery。 -
猜猜看,因为“图像没有显示在画布中,并且画布不是图像的大小”-> 代替 document.ready,使用 window.load 函数。 stackoverflow.com/questions/8396407/…
-
@PHPglue 我不同意,我们不能确定这里使用了多个
.imagecss 类。不过我同意他确实应该使用更好的 jquery 选择器来确保在添加其他.image元素时不会破坏代码。 -
@nevermind 我试过了。但这会加载图像,而不是我的画布背景上的图像
-
@PHPglue 我一次只显示一个图像类和一个图像。我可以转到另一个图像,在这种情况下,服务器将获取它,页面将被刷新,脚本将被加载,然后我将调用函数将图像替换为画布。
标签: javascript jquery html css canvas