[問題] 請問使用觸控畫圓

看板AndroidDev作者 (songs)時間12年前 (2013/10/21 18:48), 編輯推噓1(108)
留言9則, 2人參與, 最新討論串1/1
我是使用Canvas繪圖,在onDraw內畫圓 觸控畫下第一個圓OK,但畫第二個圓的時候 第一個圓會消失,只剩下第二次觸控畫下的圓 我的程式碼 Class中的onDraw內 protected void onDraw(Canvas canvas) { r = java.lang.Math.sqrt((mx-tx)*(mx-tx)+(my-ty)*(my-ty));//計算半徑 fr=(float)r;//轉成float canvas.drawCircle(tx, ty, java.lang.Math.abs(fr), paint);畫圓 } 而關於touch事件 寫了兩個function private void touch_start(float touchX,float touchY){ tx=touchX; ty=touchY; mx=touchX;//初始化 my=touchY;//初始化 } private void touch_move(float moveX,float moveY) { mx=moveX; my=moveY; } 和onTouchEvent事件 public boolean onTouchEvent (MotionEvent event){ float currentX=event.getX(); float currentY=event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: touch_start(currentX, currentY); invalidate(); break; case MotionEvent.ACTION_MOVE: touch_move(currentX, currentY); invalidate(); break; } return true; } 不知道是不是因為onDraw每次畫都會更新畫面呢? 但是我在onDraw內drawpath()來畫隨機線條 就不會有上一筆消失的問題... 不知道是什麼原因,煩請版上大大幫忙... 補充: 使用canvas.drawpath(path,pen)的話 在touch_down時有使用path.moveTo() touch_move時有使用path.quadTo() 似乎是因為這樣,才可以使Drawpath()所畫出來的線條不會消失 而drawcircle()的圓心和半徑好像都沒有這種方式 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.205.97.25 ※ 編輯: AZHI 來自: 123.205.97.25 (10/21 19:28)

10/21 21:41, , 1F
onDraw每次都會更新,你的Drawpath不會消失是因為你畫的
10/21 21:41, 1F

10/21 21:42, , 2F
是path, 而你path變更的方式是一直加上去的,所以原path
10/21 21:42, 2F

10/21 21:42, , 3F
都還在
10/21 21:42, 3F

10/21 21:43, , 4F
好像很混亂,就是其實path每次都會重畫,就算畫過的也是
10/21 21:43, 4F

10/21 21:48, , 5F
可以試試看canvas.save(), canvas.restore()能否解決
10/21 21:48, 5F

10/21 21:48, , 6F
了解path的意思了...那drawcircle有方法可以這樣嗎?
10/21 21:48, 6F

10/21 21:49, , 7F
原來A大剛好在回文,那我來試試看 謝謝~
10/21 21:49, 7F

10/21 21:58, , 8F
我突然發現save restore好像不是用在這邊的
10/21 21:58, 8F

10/21 22:26, , 9F
嗯嗯...再找看看其他方法了QQ
10/21 22:26, 9F
文章代碼(AID): #1IPGPzVY (AndroidDev)