Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在svg中构建非常大的矩阵_Javascript_Angularjs_Html_Canvas_Svg - Fatal编程技术网

Javascript 如何在svg中构建非常大的矩阵

Javascript 如何在svg中构建非常大的矩阵,javascript,angularjs,html,canvas,svg,Javascript,Angularjs,Html,Canvas,Svg,我需要在canvas/svg中构建一个10000x1000的矩阵。在每个单元格中,我需要创建一个正方形。我试着用canvas在2个循环中这样做: 对于(i=0;i您最有可能使用画布进行绘图,原因如下: 虽然SVG可以非常直接地使用,但它的绘制成本很高(请参见),即使您只进行一次动态DOM插入,如下所示 函数createSvgElement(标签、道具){ var el=document.createElements(“http://www.w3.org/2000/svg“,标签); 用于(道

我需要在canvas/svg中构建一个10000x1000的矩阵。在每个单元格中,我需要创建一个正方形。我试着用canvas在2个循环中这样做:


对于(i=0;i您最有可能使用画布进行绘图,原因如下:

虽然SVG可以非常直接地使用,但它的绘制成本很高(请参见),即使您只进行一次动态DOM插入,如下所示

函数createSvgElement(标签、道具){
var el=document.createElements(“http://www.w3.org/2000/svg“,标签);
用于(道具中的道具){
el.setAttributeNS(null,prop,props[prop]);
}
返回el;
}
var svg=document.getElementById('svg');
document.getElementById('input')。onclick=function render(){
var start=新日期();
var fragment=document.createDocumentFragment();
对于(变量x=0;x<400;x++){
对于(变量y=0;y<400;y++){
var circle=createSvgElement('circle'{
“cx”:x,
"cy":y,,
“r”:0.2,
“填充”:“红色”
});
子片段(圆);
}
}
appendChild(片段);
变量时间=新日期()-开始;
document.body.appendChild(document.createTextNode(time+'ms');
}
svg{
显示:块;
}


什么是“行为不同”意思?不同的形状/颜色/大小?是的。背景颜色和内部文本我可以给你一个答案,但我需要知道你使用阵列的目的是什么?你打算打印它吗?还是它只是为了在屏幕上显示?Op要求布局和绘制1亿个项目。这超出了任何家用电脑的范围,所以我不能说你的答案是正确的一切都很有帮助。。解决方案取决于显示介质是什么。@Blindman67如果问题被标记为
html5
canvas
,那么目标介质似乎是一个屏幕,这一点相当清楚。如果您同意,只绘制裁剪到视图中的项目,可视化对象的数量将不会真正成为问题oach it right。这个答案正好解决了这个问题,即如何正确操作。在所描述的场景中,使用canvas over SVG可以提供大量的性能提升。这个问题涉及SVG,因此没有给出这只是针对屏幕的推断。我已经第二次阅读了您的答案,您没有给出任何明确的指示你只打算呈现视觉部分,也没有展示如何有效地定位和呈现视觉部分。我认为你的答案只需要说明这样做是问题的答案(如果内容确实只是为了显示)@Blindman67如果你认为答案不存在,你可以自己写一个。