作者AZHI (songs)
看板AndroidDev
標題[問題] 請問使用觸控畫圓
時間Mon Oct 21 18:48:27 2013
我是使用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