javascript - 在 Canvas 上绘制 Div 的背景图片

标签 javascript html css canvas

我有一个 sprite 图像,用于在 div 上显示图标。 我有类名来标识 Sprite 中的每个图标。

现在我想要的是,我有一个显示特定图标的 div,我想在 Canvas 上绘制相同的图标.. I.E. div 的背景图像应该呈现在 Canvas 上。

我能做的另一件事是。我可以使用图像元素并提供 sprite 图像 url 并在 Canvas 上绘制图像。

但是由于一些问题。我不能使用这个选项。

谁能帮我在 Canvas 上渲染 div 的背景。 可用于呈现的值是该特定图标的 css 类名称。它在 Sprite 中的位置。及其大小。

最佳答案

enter image description here

方法如下:

  • 获取 div 背景图片的 URI,
  • 从该 URI 创建图像,
  • 将该图像绘制到 Canvas 上。

注意:浏览器可能已经缓存了背景图像,因此您可能不会往返于服务器以重新获取图像。

示例代码和演示:

var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;

// get the dataURL of your div's background
var bg = $('#myDiv').css('background-image');
bg = bg.replace('url(','').replace(')','').replace('"','').replace('"','');

// build an image from the dataURL
var img=new Image();
//img.crossOrigin='anonymous';
img.onload=function(){
  // draw the image onto the canvas
  ctx.drawImage(img,0,0);
}
img.src=bg;
body{ background-color: ivory; padding:10px; }
#myDiv{width:75px;height:75px;background-image:url(https://dl.dropboxusercontent.com/u/139992952/multple/sun.png);}
#canvas{border:1px solid red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id='myDiv'>Sprite div with background image</div>
<canvas id="canvas" width=100 height=100></canvas>

关于javascript - 在 Canvas 上绘制 Div 的背景图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27837440/

相关文章:

Javascript:删除正在使用 'for' 迭代的对象的属性是否安全

Javascript 闭包 - 表单提交在我告诉它之前被触发

javascript - 简易计算器计算错误

CSS 悬停效果在我不想要的时候持续存在

javascript - 使用 javaScript 打印 toDataURL 图像

javascript - WebGL - 带高度图的纹理地形

javascript - 使用 NodeJS 实现自动化

php - 每次PHP,MySQL如何检索随机行

html - <sup> 在带下划线的元素中

html - CSS 导航栏在页面中间居中