好吧我有一個難題需要解決。我有一個HTML5畫布,其中繪製了兩個圖表(線條)。我有每個圖表中連接線條的點,並且我有兩個y值(圖片中的X,Y),我必須繪製一條線並填充圖表的上方或下方。 我真的似乎無法得到它的工作,因爲我嘗試着色某些圖表上方的所有東西,並用矩形剪裁它,但我有兩個圖表,所以我必須有兩個剪輯區域,這給出了不正確的解決方案。帆布 - 填充區域在線或以下
有附連到後看的情況下
所以我有一個紅色圖表和一個棕色圖表和用於X和Y值(它們是多姿多彩行)的照片。 X是淺藍色 - 我想爲下圖着色的高度。 Y是淺灰色,是棕色圖表上方的着色高度。
如何知道圖表和X或Y的交叉點,如何實現這一點?
我正在使用的代碼是這樣的。我爲每個圖表調用兩次。我省略了繪製圖表的代碼 - 它使用「點」數組進行繪製。 不幸我沒有顏色區域的端部與所述圖表之間的交叉的點(紅色和藍色光的交叉;棕色和淺灰色)
ctx.rect(clipX, clipY, clipWidth, clipHeight);
\t \t ctx.stroke();
\t \t ctx.clip();
\t \t //fill the area of the chart above or below
\t \t ctx.globalAlpha = 0.4;
\t \t ctx.strokeStyle = color;
\t \t ctx.fillStyle = color;
\t \t ctx.beginPath();
\t \t ctx.moveTo(points[0].x, points[0].y + visibleGraphicSpace);
\t \t for (var i = 1; i < points.length; i++) {
\t \t \t ctx.lineTo(points[i].x, points[i].y + visibleGraphicSpace);
\t \t }
\t \t ctx.closePath();
\t \t ctx.fill();
首先我爲可見區域繪製矩形,然後用給定的點數組繪製圖表,關閉它並填充上下的所有內容,直到畫布結束。但是這個解決方案只需要第二個填充權,因爲它覆蓋了第一個填充權。 PS:我需要畫兩種着色餡料,不僅僅是其中一種。
我希望我能夠解釋得很好。如果您有任何疑問,請不要問。 感謝您提前給予幫助。
這是我需要的!非常讚賞答案!令人驚歎和乾淨:) – Binev