我有一個來自圖片beginRecording()方法的畫布。
我在畫布上記錄東西,然後調用endRecording()。
我希望能夠記錄在畫布縮小後不會縮放的筆畫。
我在Paint類中看不到類似的東西。你可以setStrokeWidth(float w),但是:
- 如果w == 0,你有類似我想要的功能,但只有1px
- 如果w!= 0,畫布縮放也意味着筆畫縮放。
任何想法?類似於Android中的SVG非縮放筆畫?
3
A
回答
0
0
您可能需要跟蹤自定義SVG對象中的寬度。隨着對象縮放,您可以找到新寬度與初始大小之間的比率,並將其乘以您的初始筆觸寬度。它不一定是寬度,它可以是高度或對角線。這取決於你的對象如何縮放。
或者,你可以看到,如果這已經做你想要什麼:
2
0
由於解決方案包括擴展類,我會發布詳細信息。我沒有廣泛地測試它,但僅在我需要的環境中進行測試。
我想從Picture.recording()工作方式的動作列表中獲取Drawable。
幸運的是,Path對象可以記錄動作,然後我們可以將它們繪製到畫布上。
不幸的是通過canvas.drawPath()繪製它不提供無比例縮放筆畫功能。
所以由於由@Andrew給出的提示,我已經擴展形狀類似PathShape但隨着在onResize()
public class NonScalingStrokePathShape extends Shape{
private Path mPath;
private float mInitialWidth;
private float mInitialHeight;
private float mCurrentWidth;
private float mCurrentHeight;
public NonScalingStrokePathShape(Path pPath, float pInitialWidth, float pInitialHeight) {
mPath = pPath;
mInitialWidth = pInitialWidth;
mInitialHeight = pInitialHeight;
mCurrentWidth = mInitialWidth;
mCurrentHeight = mInitialHeight;
}
@Override
public void draw(Canvas canvas, Paint paint) {
canvas.drawPath(mPath,paint);
}
@Override
protected void onResize(float width, float height) {
Matrix matrix = new Matrix();
matrix.setScale(width/mCurrentWidth, height/mCurrentHeight);
mCurrentWidth = width;
mCurrentHeight = height;
mPath.transform(matrix);
}
@Override
public NonScalingStrokePathShape clone() throws CloneNotSupportedException {
NonScalingStrokePathShape shape = (NonScalingStrokePathShape) super.clone();
shape.mPath = new Path(mPath);
shape.mInitialHeight = mInitialHeight;
shape.mInitialWidth = mInitialWidth;
shape.mCurrentWidth = mInitialWidth;
shape.mCurrentHeight = mInitialHeight;
return shape;
}
}
一些不同的邏輯。這可以以ShapeDrawable使用,這是一個通過調用Shape resize(float w,float h)方法,可繪製的已調整大小的邊界。
相關問題
- 1. SVG:模式中的非縮放筆畫不起作用?
- 2. GDI中的非縮放筆+
- 3. WPF中的類似畫筆紋理的筆畫
- 4. 在Android中縮放SVG?
- 5. Android:在WebView中縮放SVG
- 6. 基於2D縮放級別縮放svg
- 7. 動畫和旋轉關於中心的可縮放SVG對象
- 8. Android和播放SVG動畫
- 9. 筆破類似於少
- 10. 縮放可視化畫筆背景WPF
- 11. 保存和恢復「畫筆和縮放」? (程序縮放)
- 12. SVG動畫 - 如何改造縮放點
- 13. Safari SVG變換原點縮放動畫
- 14. Android的縮放動畫
- 15. 的Android ItemizedOverlay縮放畫布
- 16. SVG中的固定筆畫寬度
- 17. 縮放SVG的Web
- 18. Svg語義縮放不適用於HTML中的SVG
- 19. Android中的ListView縮放和動畫
- 20. Android畫布圖像縮放
- 21. Android圖像縮放動畫
- 22. Android縮放畫布位圖
- 23. Android:畫布不縮放
- 24. 用筆畫處理,筆畫線在縮放時被錯誤轉換
- 25. 從中心縮放SVG
- 26. 在Java中縮放SVG
- 27. 當繪畫出界時,SurfaceInkCanvas縮放筆畫
- 28. KineticJS,類似程序的畫圖,畫筆間隙
- 29. 如何基於視口縮放svg
- 30. 如在縮放SVG
有人能夠理解這裏提出的問題嗎? – Pratik
我編輯了這個問題,我希望你現在能理解我。 – mamuso