作者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)
1F:推 adks3489:onDraw每次都会更新,你的Drawpath不会消失是因为你画的 10/21 21:41
2F:→ adks3489:是path, 而你path变更的方式是一直加上去的,所以原path 10/21 21:42
3F:→ adks3489:都还在 10/21 21:42
4F:→ adks3489:好像很混乱,就是其实path每次都会重画,就算画过的也是 10/21 21:43
5F:→ adks3489:可以试试看canvas.save(), canvas.restore()能否解决 10/21 21:48
6F:→ AZHI:了解path的意思了...那drawcircle有方法可以这样吗? 10/21 21:48
7F:→ AZHI:原来A大刚好在回文,那我来试试看 谢谢~ 10/21 21:49
8F:→ adks3489:我突然发现save restore好像不是用在这边的 10/21 21:58
9F:→ AZHI:嗯嗯...再找看看其他方法了QQ 10/21 22:26