为什么我不能fill()这个形状?有什么问题?stroke()有效,但fill()无效。
https://jsfiddle.net/KriegersVan/2fm8oyzv/22/
谢谢你的帮助!
现在,我添加了一些额外的文本,因为问题复查过程太严格了。所以它要我在这里写一些更多的单词,我现在正在做。
var visibleCtx = document.getElementById("canvas").getContext("2d");
var bottomCirclesY = window.innerHeight * 0.50;
var bottomCirclesX = [
window.innerWidth / 4,
window.innerWidth / 2,
window.innerWidth - (window.innerWidth / 4)
];
var topCircleY = window.innerHeight * 0.20;
var topCircleLeftX = (window.innerWidth / 2) - (window.innerWidth * 0.17);
var topCircleRightX = (window.innerWidth / 2) + (window.innerWidth * 0.17);
var bottomLeftCircleLeftX = bottomCirclesX[0] - (window.innerWidth * 0.08);
var bottomLeftCircleRightX = bottomCirclesX[0] + (window.innerWidth * 0.08);
var halfwayBetweenTopAndBottomY = topCircleY + ((bottomCirclesY - topCircleY) / 2);
var bottomMiddleCircleLeftX = bottomCirclesX[1] - (window.innerWidth * 0.08);
var bottomMiddleCircleRightX = bottomCirclesX[1] + (window.innerWidth * 0.08);
var bottomRightCircleLeftX = bottomCirclesX[2] - (window.innerWidth * 0.08);
var bottomRightCircleRightX = bottomCirclesX[2] + (window.innerWidth * 0.08);
visibleCtx.beginPath();
//Draw left tube:
//Draw left line:
visibleCtx.moveTo(
topCircleLeftX,
topCircleY);
visibleCtx.lineTo(
bottomLeftCircleLeftX,
bottomCirclesY);
//Draw right line:
visibleCtx.moveTo(
topCircleLeftX + (window.innerWidth * 0.08),
halfwayBetweenTopAndBottomY);
visibleCtx.lineTo(
bottomLeftCircleRightX,
bottomCirclesY);
//Draw center tube:
//Draw left line:
visibleCtx.moveTo(
bottomMiddleCircleLeftX,
halfwayBetweenTopAndBottomY);
visibleCtx.lineTo(
bottomMiddleCircleLeftX,
bottomCirclesY);
//Draw right line:
visibleCtx.moveTo(
bottomMiddleCircleRightX,
halfwayBetweenTopAndBottomY);
visibleCtx.lineTo(
bottomMiddleCircleRightX,
bottomCirclesY);
//Draw right tube:
//Draw left line:
visibleCtx.moveTo(
topCircleRightX - (window.innerWidth * 0.08),
halfwayBetweenTopAndBottomY);
visibleCtx.lineTo(
bottomRightCircleLeftX,
bottomCirclesY);
//Draw right line:
visibleCtx.moveTo(
topCircleRightX,
topCircleY);
visibleCtx.lineTo(
bottomRightCircleRightX,
bottomCirclesY);
//Connect the lines:
//Draw left connector:
visibleCtx.moveTo(
topCircleLeftX + (window.innerWidth * 0.08),
halfwayBetweenTopAndBottomY);
visibleCtx.lineTo(
bottomMiddleCircleLeftX,
halfwayBetweenTopAndBottomY);
//Draw right connector:
visibleCtx.moveTo(
topCircleRightX - (window.innerWidth * 0.08),
halfwayBetweenTopAndBottomY);
visibleCtx.lineTo(
bottomMiddleCircleRightX,
halfwayBetweenTopAndBottomY);
//Connect the top lines:
visibleCtx.moveTo(
topCircleLeftX,
topCircleY);
visibleCtx.lineTo(
topCircleRightX,
topCircleY);
//Connect the bottom lines
//Draw the left tube line:
visibleCtx.moveTo(
bottomLeftCircleLeftX,
bottomCirclesY);
visibleCtx.lineTo(
bottomLeftCircleRightX,
bottomCirclesY);
//Draw the center tube line:
visibleCtx.moveTo(
bottomMiddleCircleLeftX,
bottomCirclesY);
visibleCtx.lineTo(
bottomMiddleCircleRightX,
bottomCirclesY);
//Draw the right tube line:
visibleCtx.moveTo(
bottomRightCircleLeftX,
bottomCirclesY);
visibleCtx.lineTo(
bottomRightCircleRightX,
bottomCirclesY);
visibleCtx.fillStyle = "#18dbd8";
visibleCtx.lineJoin = "round";
visibleCtx.strokeStyle = "#ffffff";
visibleCtx.fill();
visibleCtx.stroke();
visibleCtx.closePath();
如果您留有任何缝隙,那似乎行不通,我认为您不必在形状上“移动”。
在两者的开头
visibleCtx.beginPath();
试试这个小片段
visibleCtx.moveTo(
topCircleLeftX,
topCircleY
);
visibleCtx.lineTo(
bottomLeftCircleLeftX,
bottomCirclesY
);
//Draw right line:
visibleCtx.moveTo(
topCircleLeftX+(window.innerWidth*0.08),
halfwayBetweenTopAndBottomY
);
visibleCtx.lineTo(
bottomLeftCircleRightX,
bottomCirclesY
);
与
visibleCtx.moveTo(
topCircleLeftX,
topCircleY
);
visibleCtx.lineTo(
bottomLeftCircleLeftX,
bottomCirclesY
);
//Draw right line:
visibleCtx.lineTo(
topCircleLeftX+(window.innerWidth*0.08),
halfwayBetweenTopAndBottomY
);
visibleCtx.lineTo(
bottomLeftCircleRightX,
bottomCirclesY
);
都放在这两个结尾
visibleCtx.fillStyle = "#18dbd8";
visibleCtx.lineJoin = "round";
visibleCtx.strokeStyle = "#ffffff";
visibleCtx.fill();
visibleCtx.stroke();
visibleCtx.closePath();
看看区别。一个留下空白,另一个没有空白。我认为这是因为每个moveTo
都是独立的形状fill()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句