可以通过ClassName在多个画布上绘制
Possible to draw on Multiple Canvas by ClassName?
从下面的代码中,我将值传递到函数中,并使用它们来绘制特定的形状。然而,当我尝试通过ClassName获取canvas时,我的代码中断了,它说.getContext()
不是一个函数。所以我在这里试图找到一种方法。根据我目前的配置,我认为传递实际的文档画布对象是不可能的。
function drawShape1(topWidth, shadeHeight) {
var canvas = document.getElementById('product-render-configurator');
var paper = canvas.getContext('2d');
paper.clearRect(0, 0, canvas.width, canvas.height);
// begin custom shape
paper.beginPath();
//draw Shade String
paper.moveTo(150, 0);
paper.lineTo(150, 38);
//draw shadeTop
paper.moveTo( ( canvas.width / 2 ) - topWidth, 40 );
paper.quadraticCurveTo( 150 , 35, ( canvas.width / 2 ) + topWidth, 40);
paper.lineTo( ( canvas.width / 2 ) + topWidth, shadeHeight );
paper.quadraticCurveTo( canvas.width / 2 , shadeHeight - 5, ( canvas.width / 2 ) - topWidth, shadeHeight);
paper.lineTo( ( canvas.width / 2 ) - topWidth, 40 );
paper.moveTo( (canvas.width / 2) - topWidth, shadeHeight );
paper.quadraticCurveTo( canvas.width / 2 , shadeHeight + 5, ( canvas.width / 2 ) + topWidth, shadeHeight);
// complete custom shape
paper.lineWidth = 0.5;
paper.strokeStyle = 'black';
paper.stroke();
}
document.getElementsByClassName()
返回一个HTMLCollection(一个类似数组的对象),所以不能直接在它上面调用.getContext()
。你必须循环遍历它的元素,并直接在每个元素上调用.getContext()
:
function drawShape1(topWidth, shadeHeight) {
var canvases = Array.from(document.getElementsByClassName('class-name'));
for (let canvas of canvases) {
var paper = canvas.getContext('2d');
paper.clearRect(0, 0, canvas.width, canvas.height);
// begin custom shape
paper.beginPath();
//draw Shade String
paper.moveTo(150, 0);
paper.lineTo(150, 38);
//draw shadeTop
paper.moveTo( ( canvas.width / 2 ) - topWidth, 40 );
paper.quadraticCurveTo( 150 , 35, ( canvas.width / 2 ) + topWidth, 40);
paper.lineTo( ( canvas.width / 2 ) + topWidth, shadeHeight );
paper.quadraticCurveTo( canvas.width / 2 , shadeHeight - 5, ( canvas.width / 2 ) - topWidth, shadeHeight);
paper.lineTo( ( canvas.width / 2 ) - topWidth, 40 );
paper.moveTo( (canvas.width / 2) - topWidth, shadeHeight );
paper.quadraticCurveTo( canvas.width / 2 , shadeHeight + 5, ( canvas.width / 2 ) + topWidth, shadeHeight);
// complete custom shape
paper.lineWidth = 0.5;
paper.strokeStyle = 'black';
paper.stroke();
}
}
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 有没有一个javascript图形绘制库可以进行气球树布局
- 使用相同的数据集绘制各种符号
- 使用onclick绘制SVG路径
- 在谷歌地图上绘制位置数据库
- 用chart.js绘制条形图
- “可绘制地图”设置地图选项“纬度-经度”
- 多维数据集网格未在指定的分区中绘制
- 使用谷歌图表在x轴上绘制日期
- 使用fabric.js从矩形区域获取对象,并将该区域绘制到画布上
- 如何在React Native中绘制图形
- 画布中绘制的矩形区域的弹出工具提示
- 如何在OpenLayers中获取动态绘制的多边形的坐标
- 画布:逐像素绘制图像并请求动画帧计时
- D3从嵌套的JSON中绘制第二个圆环图
- 如何用d3.js绘制折线图
- 在WebGL中绘制多个二维图像
- JSXGraph:如何绘制带有箭头和无点标记的矢量
- 用图像而不是颜色填充对象(将图像绘制到画布上)
- 可以通过ClassName在多个画布上绘制