首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在HTML5画布上绘图,并使用该绘图作为div

在HTML5画布上绘图,并使用该绘图作为div
EN

Stack Overflow用户
提问于 2014-02-13 22:43:32
回答 2查看 3.2K关注 0票数 1

是否可以使用HTML5和其他js库在画布上进行绘图,并将其作为div使用?

我感兴趣的是实现一个框(对于初学者),它不是由常规css边框绘制的,而是由画布上绘制的形状绘制的。这有可能吗?又是如何做到的?

我在谷歌上找到了paper.js,但这都是关于绘画的。如何在普通HTML (5)中将该绘图作为div使用是我的问题。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-13 22:52:46

canvas是一个DOM元素,您可以在其中绘制任意矢量和光栅图形。div是另一种类型的DOM元素,可以包含其他元素,例如canvas

您在canvas元素中绘制的图形是而不是 DOM元素,您可以以与divspanptable等相同的方式进行交互。因此,我认为您的问题的答案是否定的。

票数 0
EN

Stack Overflow用户

发布于 2014-02-14 09:32:16

您可以在画布上绘制形状(使用paper.js或普通JavaScript),然后将其提取为图像,并将其设置为div或其他元素的背景。

请记住,如果div的大小发生变化,则需要更新背景。

代码语言:javascript
复制
var canvas = document.createElement('canvas'),
    div = document.getElementById('myDivElement'),
    ctx = canvas.getContext('2d'),
    cs = getComputedStyle(div),
    w = parseInt(cs.getPropertyValue('width') , 10),
    h = parseInt(cs.getPropertyValue('height') , 10);

canvas.width = w;
canvas.height = h;

/// draw something on canvas
ctx.lineWidth = 5;
ctx.strokeStyle = '#f90';
ctx.strokeRect(0, 0, w, h);

/// set as background:
div.style.backgroundImage = 'url(' + canvas.toDataURL() + ')';

在线演示

请注意,许多事情都会影响div的大小,如填充、边距、框大小、边框等。在计算画布的大小时,需要考虑这些因素。在许多情况下,更好的选择是将box-sizing: border-box;用于相关元素的CSS规则。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21767147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档