我正在開發技術繪圖應用程序,我需要添加一些工具來繪製線條,圓形,矩形和角落。現在我可以繪製線條和自由繪畫,但是我無法繪製圓形,矩形和角落。我在很多網站中發現瞭如何繪製它,但是靜態的,我的意思是,在你預先設置的位置或你觸摸的位置繪製形狀,但我需要知道如何繪製,例如,在位置I上的一個圓圈觸摸並使它比我分開我的手指更大。我希望你明白我的意思。繪製形狀動態
繪製形狀動態
回答
您可以有兩個變量x和y,然後每次觸摸屏幕時將x和y設置爲該值,同時繪製繪製座標爲x和y的圓。
如果您正在繪製並且只是想保留一個畫圓,您可以繪製該圓並將其添加到x和y的畫布中,然後在下一次觸摸屏幕時將在x上繪製新的圓y和舊的將保持着色。
您使用的是Canvas
?如果是這樣,你可以找出如何做到這一點here (Canvas documentation)和here (Bitmap documentation)。根據您的情況,您可以創建一個新的Bitmap
並將其分配給Canvas
,然後在Canvas
上繪製並在位圖內部,您將獲得所需的圓形和其他形狀,並在下一個繪製框中繪製新形狀,並且更改將保留。
編輯:爲了使動態半徑遵循此邏輯,當您觸摸屏幕時,將x和y設置到該點(圓心),同時在屏幕上移動手指,計算半徑與x和y,如上圖所示,擡起手指時應用位圖上的圖形。
一些代碼:
public boolean onTouchEvent(MotionEvent e)
{
switch (e.getAction())
{
case MotionEvent.ACTION_DOWN:
x = (int) event.getX();
y = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
//If I'm not wrong this is how to calculate radius,
//I'm at work and can't test this now, you can use your way
int distanceX = (int) event.getX() -x;
int distanceY = (int) event.getY() -y;
radius = sqrt(distanceX *distanceX + distanceY *distanceY);
break;
case MotionEvent.ACTION_UP:
//Draw circle inside your bitmap here
//This is like a flag to notify the program that no new shape is being drawn
x = -1;
break;
}
public void draw(Canvas canvas)
{
canvas.drawBitmap(myBitmap, 0, 0, null);
//A new shape is being drawn
if (x != -1)
//In here you place a switch to decide which shape you are drawing
//for this example i assume circle
canvas.drawCircle(radius, x, y, paint);
}
當你擡起手指的新圈子應該在你的位圖畫,所以你不必添加額外的代碼爲每個新的循環。編輯2:我將用我描述的方法Bitmap
和Canvas
添加更多代碼。
Bitmap myBitmap;
Canvas myCanvas;
//Constructor
public myActivity(Bundle bundle) //or whatever your constructor is
{
myBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
myCanvas = new Canvas(myBitmap);
}
現在什麼,你的「myCanvas」畫將被應用到「設備無關」,當ACTION_UP
激活畫圓圈這是對draw
功能繪製「myCanvas」。
case MotionEvent.ACTION_UP:
myCanvas.drawCircle(radius, x, y, paint);
x = -1;
break;
我正在使用畫布。我正在閱讀,現在我可以繪製圓圈,但我想用動態半徑來繪製它。我讀taht [鏈接](http://stackoverflow.com/questions/8974088/how-to-create-a-resizable-rectangle-with-user-touch-events-on-android/17807469#17807469),但我不能繪製沒有球的矩形。任何想法? – malaka
@AbelSuviri我編輯了我的答案和更多解釋 – TomTsagk
我測試了你的代碼,並且改變了它以適應我的代碼,但它不能正常工作。我在屏幕左側出現一個大圓圈,我無法將它移動到位置,當我停止觸摸屏幕時,我在我觸及的位置出現一個小圓圈,大圓圈消失 – malaka
- 1. Java - 繪製動態形狀輪廓
- 2. 創建js克隆一個形狀與動態繪製圖形
- 3. 繪製動態圖形
- 4. 動態繪製弧形
- 5. 繪製動態圖形?
- 6. 形狀可繪製
- 7. 多態形狀類繪製最近創建的任何形狀?
- 8. Jsplump動態繪製狀態機圖
- 9. 繪製形狀與JavaScript - 形狀問題
- 10. Xamarin.Android形狀不繪製到活動
- 11. 繪製和移動形狀問題
- 12. 拖動以繪製更多形狀
- 13. 移動後未繪製SFML形狀
- 14. 使用Android中的動態內容繪製自定義形狀
- 15. 如何動態更改可繪製的顏色和形狀?
- 16. 如何在flex中創建/繪製動態形狀4
- 17. 點擊JPanel繪製形狀
- 18. 繪製邊框形狀javafx
- 19. 用圓圈繪製形狀
- 20. 在XAML中繪製形狀?
- 21. 繪製一個Rosetta形狀
- 22. 用css繪製形狀
- 23. 使用TouchesMoved繪製形狀
- 24. 如何繪製形狀
- 25. 繪製形狀使用龜
- 26. 繪製形狀GLUT_DOUBLE模式
- 27. 用於繪製形狀
- 28. 形狀繪製編程
- 29. Paper.js不繪製形狀
- 30. JavaFX延遲繪製形狀
你應該閱讀手勢 – runDOSrun
我不知道如何實現手勢繪製。你知道任何教程或什麼?謝謝。 – malaka