为什么我的画布上只显示两条线
Why are only two lines showing up on my canvas?
我有用于绘制到画布元素的线条的点数组,但是,只有两条线被绘制到画布上。 当我在每个阵列上执行控制台日志时,实际上会打印出正确的数组。 谁能告诉我为什么他们没有全部出现?
.JS
ctx.beginPath();
for(var i = 0; i < result[0].back_lines.x1.length - 1; i++){
ctx.moveTo(result[0].back_lines.x1[i], result[0].back_lines.y1[i]);
ctx.lineTo(result[0].back_lines.x2[i], result[0].back_lines.y2[i]);
}
ctx.lineWidth = result[0].back_lines.width;
ctx.strokeStyle = result[0].back_lines.stroke;
ctx.stroke();
杰伦
[{
"back_lines": {
"width": 6,
"stroke": "#000000",
"x1": [938.4, 621.283, 621.283, 604.267, 549.1, 504.233, 582.817, 582.817, 380.033, 477.5, 477.5, 379.42, 379.42, 344.73, 344.73, 588.37, 646.6, 646.6, 804.33, 804.33, 601.05, 601.05, 597.433, 597.433, 475.433, 362.467, 208.8, 191.217, 191.217, 645.017, 645.017, 866.617, 866.617, 849.25, 849.25, 849.25, 360.033, 360.033, 360.033, 209.8, 209.8, 566.5, 566.5, 611, 611, 360.033, 478.05, 793.083, 793.083, 576, 793.083, 843.32, 843.32, 478.05, 504.233, 504.233, 587.37, 646.07, 646.07, 804.43, 803.4, 622.52, 622.52],
"y1": [258.167, 177.82, 177.82, 258.167, 257.633, 256.633, 257.9, 214.22, 214.22, 366, 484.133, 269.767, 308.82, 308.82, 557.05, 483.5, 483.5, 515, 515, 499.2, 483, 434.3, 141.667, 111.267, 111.267, 111.267, 111.267, 111.267, 586.083, 586.083, 534.783, 534.783, 515.417, 499.2, 499.2, 409.683, 111.267, 111.267, 84.383, 84.383, 577.7, 577.7, 577.7, 577.7, 498.667, 84.383, 84.383, 84.383, 377.233, 377.233, 84.383, 84.383, 120.5, 84.383, 366, 466.15, 467.27, 467.27, 394.52, 394.52, 409.7, 467.8, 403.42],
"x2": [868, 621.283, 621.283, 604.267, 549.1, 504.233, 582.817, 582.817, 380.033, 477.5, 477.5, 379.42, 379.42, 344.73, 344.73, 588.37, 646.6, 646.6, 804.33, 804.33, 601.05, 601.05, 597.433, 597.433, 475.433, 362.467, 208.8, 191.217, 191.217, 645.017, 645.017, 866.617, 866.617, 849.25, 849.25, 849.25, 360.033, 360.033, 360.033, 209.8, 209.8, 566.5, 566.5, 611, 611, 360.033, 478.05, 793.083, 793.083, 576, 793.083, 843.32, 843.32, 478.05, 504.233, 504.233, 587.37, 646.07, 646.07, 804.43, 803.4, 622.52, 622.52],
"y2": [258.167, 225.45, 225.45, 258.167, 257.633, 256.633, 257.9, 214.22, 214.22, 366, 484.133, 269.767, 308.82, 308.82, 557.05, 483.5, 483.5, 515, 515, 499.2, 483, 434.3, 141.667, 111.267, 111.267, 111.267, 111.267, 111.267, 586.083, 586.083, 534.783, 534.783, 515.417, 499.2, 499.2, 409.683, 111.267, 111.267, 84.383, 84.383, 577.7, 577.7, 577.7, 577.7, 498.667, 84.383, 84.383, 84.383, 377.233, 377.233, 84.383, 84.383, 120.5, 84.383, 366, 466.15, 467.27, 467.27, 394.52, 394.52, 409.7, 467.8, 403.42]
}
}]
这里的问题是,除了前三对之外,几乎所有的 x1/x2 和 y1/y2 对都具有相同的值。这意味着它们不会形成一条线。
也许在某处添加或删除了起点或终点?
此外,我建议使用 DRYer 代码并将您的对象分配给变量,而不是重复相同的数组索引/属性访问,并且您在 for
循环中遇到了一个错误:
var backLines = result[0].back_lines,
x1 = backLines.x1,
y1 = backLines.y1,
x2 = backLines.x2,
y2 = backLines.y2;
ctx.beginPath();
ctx.lineWidth = backLines.width;
ctx.strokeStyle = backLines.stroke;
for(var i = 0; i < x1.length; i++){
ctx.moveTo(x1[i], y1[i]);
ctx.lineTo(x2[i], y2[i]);
}
ctx.stroke();
相关文章:
- 为什么我的画布上只显示两条线
- D3 - 在两个不与其他对象相交的对象之间绘制一条线
- 使用 D3 的两条线之间的阴影区域
- Snap.如何始终用一条线连接两个对象
- cs.js - 同时仅显示一条线(在多折线图中)
- 在画布上移动两条以上的箭头线
- 在拉斐尔JS的两个百分点之间画一条线
- 如何使用整数值(不是向量)计算两条线之间的度数
- 试图通过两条线获得自定义和无限的猫头鹰轮播
- 使用d3来遮挡两条线之间的区域
- 我怎么知道两条线是否重叠?
- Touchmove在画布上绘制两条线而不是一条线
- 小叶中两条线的交点
- 高图表没有显示两条曲线的准确百分比
- 广告画廊.用两条线表示
- 如何在线形图上的两条线之间使用chart.js version2
- 这两条线的区别
- 如何使图表JS中的两条线变粗
- Highchart仅显示一条线上的其他点
- 高图表:显示两条线而不是一条线