【发布时间】:2015-12-17 16:24:20
【问题描述】:
好的,我有一个很难解决的问题。我有一个 HTML5 画布,我在其中绘制了两个图表(线)。我有每个图表的连接线的点,我有两个 y 值(图中的 X,Y),我必须在图表上方或下方画一条线并填充。 我似乎真的无法让它工作,因为我尝试为某个图表上方的所有内容着色并用矩形对其进行裁剪,但我有两个图表,所以我必须有两个裁剪区域,这给出了不正确的解决方案。
有贴图看案例
所以我有一个红色图表和一个棕色图表以及 X 和 Y 的值(它们是彩色线条)。 X 是浅蓝色 - 我要为下图着色的高度。 Y 是浅灰色,是棕色图表上方的着色高度。
在不知道图表与 X 或 Y 的交叉点的情况下,我如何实现这一点?
我正在使用的代码是这样的。我为每个图表调用了两次。我省略了绘制图表的代码——它是使用“点”数组绘制的。 不幸的是,我没有颜色区域末端和图表之间的交叉点(红色和浅蓝色的交叉点;棕色和浅灰色的交叉点)
ctx.rect(clipX, clipY, clipWidth, clipHeight);
ctx.stroke();
ctx.clip();
//fill the area of the chart above or below
ctx.globalAlpha = 0.4;
ctx.strokeStyle = color;
ctx.fillStyle = color;
ctx.beginPath();
ctx.moveTo(points[0].x, points[0].y + visibleGraphicSpace);
for (var i = 1; i < points.length; i++) {
ctx.lineTo(points[i].x, points[i].y + visibleGraphicSpace);
}
ctx.closePath();
ctx.fill();
首先我为可见区域绘制矩形,然后使用给定的点数组绘制图表,关闭它并填充上方或下方的所有内容,直到画布结束。但是这个解决方案只需要第二个填充权,因为它会覆盖第一个。
PS:我需要绘制两种着色填充物,而不仅仅是其中一个。
我希望我能够很好地解释它。如果您有任何问题,请不要介意。 提前感谢您的帮助。
【问题讨论】:
标签: javascript html canvas charts