我有一個自定義視圖,我加載位圖圖像。然後我做一些操作,如放大,縮小,旋轉,拖動和改變位置等。在完成這些操作後,我想用手指在位圖上繪製。我爲此使用canvas.drawPath(mPath, mPaint)
。如果我在屏幕上加載圖像並開始繪製,它完美的工作,但如果我改變圖像的位置或旋轉它或放大或縮小;我的路徑被繪製在不同於我所觸及的位置。我的問題是什麼可能是這個問題的原因,我該如何解決。如何在重新定位自定義視圖中的圖像並重新縮放圖像後在位圖圖像上使用路徑?
0
A
回答
0
我的問題解決了由this question答案拖動圖像和重新定位和縮放上下。
我已經把下面的代碼放在了onTouchEvent方法中。
float x = event.getX()/drawImage.getScaleX() - rect.left/drawImage.getScaleX();
float y = (event.getY())/drawImage.getScaleY() - rect.top/drawImage.getScaleY();
float p = drawImage.getCenterX()/drawImage.getScaleX() - rect.left/drawImage.getScaleX();
float q = drawImage.getCenterY()/drawImage.getScaleY() - rect.top/drawImage.getScaleY();
float x1 = (float) ((x - p) * Math.cos(drawImage.getAngle()) + (y - q) * Math.sin(drawImage.getAngle()) + p);
float y1 = (float) ((y - q) * Math.cos(drawImage.getAngle()) - (x - p) * Math.sin(drawImage.getAngle()) + q);
這裏drawImage是我自定義的drawable。 x1,y1是我正在搜索的實際座標。
0
在更改所顯示的圖像之前,請保存畫布的位置。 之後,恢復原來的位置。 事情是這樣的:
public void onDraw(Canvas c) {
c.save();
//Do your "image manipulation" logic
c.restore();
c.drawPath(mPath, mPaint);
}
相關問題
- 1. 在自定義圖像視圖中縮放圖像
- 2. 應用clipTo在fabric.js圖像路徑不正確重新定位圖像
- 3. 使用效果(「縮放」):保持圖像到位並不會重新定位
- 4. 如何用CSS重新定位絕對定位的圖像?
- 5. Android縮放位圖圖像
- 6. 圖片像素重新定位
- 7. 重新定位加載圖像
- 8. 重新定位圖像 - iOS設備
- 9. 在固定寬度的圖像視圖中縮放圖像
- 10. 上傳圖片,重新定位,保存圖像?
- 11. 定位圖像右上角的圖像
- 12. 如何在圖像視圖上放置自定義按鈕>
- 13. .htaccess 301將圖像從舊圖像重定向到新圖像
- 14. 重新縮放位圖的縮放視圖
- 15. 將圖像定位在圖像下方
- 16. 定位在圖像和圖像下
- 17. 得到位圖像素的自定義視圖後旋轉
- 18. monodroid如何在圖像上放置圖像並放置圖像
- 19. 使用(位圖圖像=新的位圖(路徑))錯誤..參數無效?
- 20. 縮放圖像並在圖像視圖中進行設置會降低圖像質量並縮小圖像
- 21. 如何打開圖像並使用ImageMagick重新保存圖像?
- 22. 如何在Windows中使用c/C++重新縮放圖像?
- 23. 圖像在滾動的自定義列表視圖中重複
- 24. 將位圖圖像放入ListView的圖像視圖中
- 25. 縮放放置在圖像視圖中的圖像的控件?
- 26. 如何在Outlook自定義列中添加位圖圖像
- 27. 動態定位縮放的html圖像
- 28. 圖像在phpmyadmin使用圖像路徑
- 29. 使用CSS來縮放和重新定位一個圖像內的div?
- 30. 在圖像視圖中移動位圖
放置您的一些代碼。因此它有助於理解 –
可能使用FrameLayout並在縮放的圖像視圖的頂部具有繪圖視圖,因此繪圖不會被縮放比例扭曲。 – eduyayo