7
A
回答
1
看來它無法控制行程(即,內,中心或外面)的位置。欲瞭解更多信息請參閱:在繪製例如 Android Paint stroke width positioning
我的解決辦法偏移筆劃寬度,
final RectF rectF = new RectF(halfStrokeWidth, halfStrokeWidth, width - halfStrokeWidth, height - halfStrokeWidth);
canvas.drawRoundRect(rectF, roundX, roundY, paint);
1
可以使用CornerPathEffect類的幫助!以一個圓形的形狀爲例。
在使用canvas.drawRoundRect()方法繪製具有半徑的背景色並使用Paint設置Style.FILL時,您可以獲得圓形矩形形狀。然後使用相同的方法用Style.STROKE和paint的設置寬度在其上繪製圓形矩形邊框,即可獲得邊框。
代碼:
mBackgroundRectF.set(0, 0, mWidth, mHeight);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBackgroundPaint);
// edge ajustment because paint stroke style is center align
float edge = mBorderWidth/2;
mBackgroundRectF.set(edge, edge, mWidth - edge, mHeight - edge);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBorderPaint);
現在看起來,這不是一個我想這也有一定的背景和邊框之間的偏移:
讓我們嘗試CornerPathEffect:
mBackgroundRectF.set(0, 0, mWidth, mHeight);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBackgroundPaint);
// edge ajustment because paint stroke style is center align
float edge = mBorderWidth/2;
mBackgroundRectF.set(edge, edge, mWidth - edge, mHeight - edge);
// use CornerPathEffect and then use drawRect() method
mBorderPaint.setPathEffect(new CornerPathEffect(mRadius/2));
canvas.drawRect(mBackgroundRectF, mBorderPaint);
現在看起來正確:
+0
雙倍的疼痛筆劃寬度可以解決問題! – YXP
1
使用Canvas#clipPath(Path, Op)
。但請注意,Android 3.0和reintroduced in 4.3中刪除了對硬件加速畫布中路徑的剪輯支持。對於3.0-4.2,顯然有workaround,但我沒有辦法測試它。
相關問題
- 1. 筆畫的內部和外部路徑
- 2. Android路徑內部存儲
- 3. 將筆畫與路徑進行比較
- 4. KineticJs手寫選擇路徑/筆畫
- 5. SVG - 創建不同合併路徑的外部筆畫
- 6. 筆畫可以用作SVG剪輯路徑的一部分嗎?
- 7. 清除HTML5畫布中的筆劃路徑(循環內)
- 8. 內部路徑與HTTP路徑
- 9. 內部路徑長度
- 10. Android TextView多筆畫
- 11. Android MediaStore.ACTION_VIDEO_CAPTURE,外部路徑?
- 12. Android外部庫路徑
- 13. 路徑動畫
- 14. 動畫路徑?
- 15. 如何在android中獲取內部和外部sdcard路徑
- 16. 具有上升筆畫寬度的路徑
- 17. javafx碰撞問題的路徑(行)與粗筆畫和圓圈
- 18. 如何繪製一個可變的筆畫寬度的路徑
- 19. 如何用圖像中的畫筆填充路徑
- 20. D3在鼠標懸停時改變路徑筆畫顏色
- 21. SVG中相鄰路徑上的重疊/虛線筆畫
- 22. 如何讓SVG路徑的筆畫獲取背景圖片?
- 23. html svg模式作爲畫筆從路徑中風
- 24. (Android)在內部存儲器中查找路徑/ Android
- 25. 如何找到內部SD卡路徑?
- 26. Android畫布路徑實時性能
- 27. 在Android中設置動畫路徑?
- 28. Android開畫廊圖像URI路徑
- 29. 如何動態調整帶有動畫筆畫厚度的矩形路徑?
- 30. 動畫WPF路徑
我不明白這個問題,你能更具體嗎?你的意思是說「所有的中風都在路徑之內,而不是一半的中風和一半的外部」? – Marek
假設我繪製了一個黑色爲10像素寬度的筆畫,然後用紅色爲5像素寬度的筆畫繪製形狀,那麼紅色路徑將是黑色路徑寬度的一半,並且將會是在中間,因爲一半的行程將在形狀邊界內,一半在外面。相反,我想要的是整個筆畫在形狀邊界內。在上面的例子中,這意味着紅色筆劃將位於黑色筆劃的一側,最靠近形狀邊界的一側 – user2430147