看板 AndroidDev 關於我們 聯絡資訊
我是使用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)
adks3489:onDraw每次都會更新,你的Drawpath不會消失是因為你畫的 10/21 21:41
adks3489:是path, 而你path變更的方式是一直加上去的,所以原path 10/21 21:42
adks3489:都還在 10/21 21:42
adks3489:好像很混亂,就是其實path每次都會重畫,就算畫過的也是 10/21 21:43
adks3489:可以試試看canvas.save(), canvas.restore()能否解決 10/21 21:48
AZHI:了解path的意思了...那drawcircle有方法可以這樣嗎? 10/21 21:48
AZHI:原來A大剛好在回文,那我來試試看 謝謝~ 10/21 21:49
adks3489:我突然發現save restore好像不是用在這邊的 10/21 21:58
AZHI:嗯嗯...再找看看其他方法了QQ 10/21 22:26