我想繪製一條管道圖像(下圖),就像繪製一條線條一樣,它跟隨着鼠標光標。當我按下左鍵並移動鼠標光標時,管線圖像將畫到光標位置(如貝塞爾曲線) 。我怎樣才能做到這一點?謝謝!我想繪製一條管線圖像,就像繪製一條跟隨鼠標光標的線條
-1
A
回答
0
下面是如何給出一些鼠標點定義了「管」的實例。
用紅線連接的紅色點表示您的鼠標點。
綠色&藍色線被計算爲平行於紅色鼠標線,偏移量爲15像素。
綠色&藍線形成你的管外。
,我會幫助你的數學,但你的造型管是由你。
需要一些三角準備好?
鑑於您的鼠標沿着多段線(由線段連接的一系列點)移動。您的鼠標點是圖中的紅線。
在每個點上,計算垂直於該點的兩點並在該點的任一側。 當你連接這些垂直點時,它們成爲你的「管」的兩側。這些是鼠標線兩側的綠色&藍線。
如何:
使用Math.atan2來計算斜率的值[X1,Y1]和[X2,Y2]之間的角度。
var dx=x2-x1;
var dy=y2-y1;
var originalAngle=Math.atan2(dy,dx);
使用Math.cos/Math.sin找到2個垂直[X1,Y1]
// a perpendicular angle is always 90 degrees different
// from the angle of the original line.
// (90 degrees == Math.PI/2 radians)
// let's subtract 90 degrees
var perpendicularAngle=originalAngle-Math.PI/2;
// let's get a perpendicular point that's
// 15 pixels away from [x1,y1]
var offsetLength=15;
// use cosine and sine to calculate that perpendicular point
var perpX1=x1+offsetLength*Math.cos(perpendicularAngle);
var perpY1=y1+offsetLength*Math.sin(perpendicularAngle);
// repeat to get the opposite perpendicular point
// This time add 90 degrees to the original angle.
var perpendicularAngle=originalAngle+Math.PI/2;
var perpX2=x1+offsetLength*Math.cos(perpendicularAngle);
var perpY2=y1+offsetLength*Math.sin(perpendicularAngle);
一個邊緣問題必須解決:如果傾斜角度在水平或垂直,餘弦/正弦計算不起作用。相反,只需在點上添加/減去偏移長度。
數學部分完成!
現在只需按照您的需要設計數據點。也許連接鼠標線兩側的垂直點,形成管子的兩側。應用一些半透明填充以允許背景顯示。無論您的設計需要什麼。
祝您的項目順利!
相關問題
- 1. KineticJS - 用鼠標繪製線條
- 2. Zedgraph用鼠標繪製線條
- 3. html canvas一條線跟隨鼠標
- 4. 畫布通過鼠標光標繪製線條
- 5. LWUIT Painter:如何在圖像標籤上繪製一條線?
- 6. 使用座標繪製一條線
- 7. 用Java swing繪製一條線繪製多條線
- 8. 用PyQt在圖像上繪製線條
- 9. 在拍攝圖像上繪製線條
- 10. 通過UIScrollView繪製圖像和線條
- 11. Pyshp:PolyLineZ繪圖在我的線條之間繪製線條
- 12. 用UIBezierPath繪製一條線
- 13. 從UIViewController繪製一條線
- 14. Richtextbox繪製一條rtf線
- 15. Python&CV2:如何用鼠標在圖像上繪製線條然後返回線條座標?
- 16. 繪製直線的線條
- 17. 沿着鼠標移動繪製一條線
- 18. 用戶在Visual Studio C#中繪製一條直線,隨着鼠標一起移動線條?
- 19. 在圖像上繪製線條與座標不匹配。蟒蛇
- 20. 用曲線繪製一條線
- 21. 在地圖上繪製一條線
- 22. 在c#圖上繪製一條線
- 23. 在svg圖片上繪製一條線
- 24. 在鼠標方向上繪製一條具有恆定長度的線條
- 25. Java:繪製線條光滑的LWJGL OpenGL
- 26. Matplotlib:在線條邊緣繪製標記
- 27. jvectormap:在標記之間繪製線條?
- 28. 如何在bb中的編碼圖像上繪製一條線?
- 29. MFC和Kinect:在Kinect的圖像上繪製一條線
- 30. 在java中的圖像上繪製一條線
謝謝你的解決方案。對我來說這似乎是一個好方法。我會試試看。^ _ ^ – frankqianghe