将 Canvas 元素附加到 DOM

Posted

技术标签:

【中文标题】将 Canvas 元素附加到 DOM【英文标题】:Appending a Canvas Element to DOM 【发布时间】:2016-07-24 17:44:14 【问题描述】:

我在这里尝试使用appendChild 来调出画布并制作像 MS Paint 这样的程序,在这里我尝试用鼠标“绘图”。

我试图将它的高度/宽度更改为仅 500x500 并出现在我需要在 div 中调用的 div 之间。

我似乎无法理解为什么这不能正常工作。

有人可以帮忙吗?

var canvas = document.getElementById('canvas'); 
document.body.appendChild(canvas);

var ctx = canvas.getContext('2d');
document.body.style.margin = 0; 
canvas.style.position = 'fixed'; 
resize(); 

var pos  =  x: 0, y: 0 ; 

canvas.addEventListener('resize', resize); 
canvas.addEventListener('mousemove', draw); 
canvas.addEventListener('mousedown', setPosition); 
canvas.addEventListener('mouseenter', setPosition); 

//what would be the new positions from the "mouse" event. 

function setPosition(e) 
 
    pos.x = e.clientX; 
    pos.y = e.clientY;


function resize()
 
    ctx.canvas.width = window.innerWidth; 
    ctx.canvas.height = window.innerHeight; 
 

function draw(e) 
 
    if (e.buttons! ==1) return; 

    ctx.beginPath(); 
    ctx.lineWidth = 5; 
    ctx.lineCap = 'round'; 
    ctx.strokeStyle = 'red';

    ctx.moveTo(pos.x, pos.y); 
    setPosition(e); 
    ctx.lineTo(pos.x, pos.y); 

    ctx.stroke(); 
 

【问题讨论】:

【参考方案1】:

尝试这样使用。

var canvas = document.createElement('canvas');
document.body.appendChild(canvas);

document.getElementById('idName') 用于选择现有元素。它不会创建一个新的。

【讨论】:

以上是关于将 Canvas 元素附加到 DOM的主要内容,如果未能解决你的问题,请参考以下文章

WPF教程四;布局之Canvas面板

将数据 URI 转换为文件,然后附加到 FormData

Unity中的UI

Grid.Row和类似属性如何获得如此出色的DESIGN TIME支持?

canvas和svg的区别

将元素附加到数组后,它应该显示更多元素