我想在HTML5畫布上畫一些虛線。但我找不到有這樣的功能。畫布路徑只能繪製實線。人們試圖在CSS中使用一些邊框特徵(虛線,虛線)來繪製虛線,但它們只能是水平或垂直的。所以我陷入了這個問題。我還找到一個名爲RGraph的圖書館,它可以繪製虛線。但使用外部庫會使繪圖非常慢。那麼任何機構都有一個想法如何實現這一點?任何幫助將不勝感激。在HTML5畫布上繪製虛線?
回答
繪圖虛線上帆布
線I提供這種向上不作爲一個完整的解決方案,但作爲簡單的方法來繪製任意2點之間的點線(任意角度的線)。它吸引得非常快。
您可以修改它以適合您的虛線需求。繪製破折號不應明顯減慢繪圖速度。
這裏是代碼和一個小提琴:http://jsfiddle.net/m1erickson/pW4De/
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
DrawDottedLine(300,400,7,7,7,20,"green");
function DrawDottedLine(x1,y1,x2,y2,dotRadius,dotCount,dotColor){
var dx=x2-x1;
var dy=y2-y1;
var spaceX=dx/(dotCount-1);
var spaceY=dy/(dotCount-1);
var newX=x1;
var newY=y1;
for (var i=0;i<dotCount;i++){
drawDot(newX,newY,dotRadius,dotColor);
newX+=spaceX;
newY+=spaceY;
}
drawDot(x1,y1,3,"red");
drawDot(x2,y2,3,"red");
}
function drawDot(x,y,dotRadius,dotColor){
ctx.beginPath();
ctx.arc(x,y, dotRadius, 0, 2 * Math.PI, false);
ctx.fillStyle = dotColor;
ctx.fill();
}
嗨@markE,非常感謝您展示此解決方案。但是,我們需要嘗試的線條不一定是直線。所以我認爲這個解決方案可能行不通。但是,謝謝你們一樣! – 2013-03-27 02:05:20
僅供參考 - 點線和虛線是一些新的畫布功能 ,現在是在規範中一部分 - 在Chrome中已經實現:
http://www.rgraph.net/blog/2013/january/html5-canvas-dashed-lines.html
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.setLineDash([5, 3]);/*dashes are 5px and spaces are 3px*/
ctx.beginPath();
ctx.moveTo(0,100);
ctx.lineTo(400, 100);
ctx.stroke();
thx這個偉大的作品。 – louisinhongkong 2013-11-12 12:55:56
對於將來的讀者,下面的javadeveloper的答案有較低的分數,但不需要定義任何函數 - 它使用內置的setLineDash()方法。 – Seb 2016-03-03 17:28:19
這需要被接受的答案 – 2017-08-12 02:59:12
這是創建虛線更簡單的方法:
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.setLineDash([5, 15]);
ctx.beginPath();
ctx.moveTo(0,100);
ctx.lineTo(400, 100);
ctx.stroke();
希望有所幫助。
以下是關於setLineDash方法的API參考:https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash。很明顯,它支持IE 11以及其他所有瀏覽器 – thenickdude 2016-02-29 01:38:03
您可以使用setLineDash()
方法。
context.setLineDash([2,3]);
http://www.rgraph.net/blog/2013/january/html5-canvas-dashed-lines.html
- 1. 在畫布上繪製虛線
- 2. 動畫逐步繪製虛線HTML5畫布和Jquery
- 3. HTML5畫布繪製線在標尺
- 4. 在控制檯上繪製HTML5畫布
- 5. HTML5畫布繪製
- 6. HTML5 - 超時後在畫布上繪製
- 7. 在HTML5的畫布上繪製圖像
- 8. 在HTML5畫布上繪製圖像
- 9. 在HTML5畫布上繪製視頻
- 10. 在html5畫布上繪製圖像
- 11. HTML5畫布繪製多彩線
- 12. 繪製單個像素線HTML5畫布
- 13. HTML5用畫布繪製,旋轉線?
- 14. HTML5畫布 - 如何在圖像背景上繪製線條?
- 15. 我似乎無法在html5畫布上繪製線條
- 16. 在HTML5畫布二次曲線上繪製箭頭
- 17. 在畫布上繪製GOOD LOOKING(如Flash)線條(HTML5) - 可能嗎?
- 18. 無法在畫布上繪製垂直虛線
- 19. 如何在畫布上繪製虛線矩形?
- 20. HTML5畫布繪製拖放
- 21. 連續繪製HTML5畫布
- 22. html5畫布繪製/保存
- 23. HTML5畫布繪製圖像
- 24. 在QML畫布上繪製線段
- 25. 使用WPF在畫布上繪製線
- 26. 在畫布上繪製曲線路徑?
- 27. 繪製在畫布光線
- 28. JavaFX帆布:繪製虛線
- 29. 擦除HTML5畫布上的以前繪製的線
- 30. HTML5動畫虛線
「使用外部庫將使圖紙很慢」 - 是什麼讓你說呢? – 2013-03-13 21:44:16
我的隊友已經試圖用庫來繪製這些虛線。畫布上有大約20條線條,但對錶現有很大的影響。當用戶與畫布進行交互時,如果拖動畫布,則會看到相當明顯的延遲。重繪它們需要更長的時間。 – 2013-03-13 22:21:57
http://en.wikipedia.org/wiki/Correlation_does_not_imply_causation - 這很可能是庫所使用的導致延遲的技術,而不是它被打包到庫中的事實。 – 2013-03-13 22:27:16