[問題] canvas 畫圖問題
大家好
小弟目前寫了一隻APP
其中有個功能是 當手勢在螢幕上 由右往左 劃
canvas就繪畫橫線
反之 由左往右劃
canvas就繪畫直線
程式流程大概為
用XY座標判斷使用者是左劃還右劃
判斷完後先清除surfaceview 在畫線
可是執行後 canvas畫了第一條線後 再畫第二條
第一條不會被清除 還是會在
執行畫面如下圖
先畫第一條
http://ppt.cc/yr_R
在畫另一條(原本的橫線還是在,沒有被清除)
http://ppt.cc/X6RJ
部分主要程式碼如下
//判斷手勢
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
Log.i("Fling", "Fling Happened!");
draw(drawAction.clear);
if (e1.getX() - e2.getX() > 150) {
draw(drawAction.draw_h);
present_status.setText("橫線");
} else if (e1.getX() - e2.getX() < -150) {
draw(drawAction.draw_v);
present_status.setText("直線");
}
return true;
}
//判斷繪圖
@Override
protected void onResume() {
super.onResume();
}
enum drawAction {
draw_h, draw_v, clear,
}
void draw(drawAction action) {
try {
// 鎖定
canvas = surfaceHolder.lockCanvas(null);
synchronized (surfaceHolder) {
//做不同的繪圖
switch (action) {
case draw_h:
draw_H(canvas);
break;
case draw_v:
draw_V(canvas);
break;
case clear:
clear(canvas);
break;
}
}
} finally {
if (canvas != null) {
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
//畫水平線
void draw_H(Canvas canvas) {
Paint p = new Paint();
p.setARGB(500, 0, 255, 0);
canvas.drawLine(50,100,400,100, p);
}
//畫垂直線
void draw_V(Canvas canvas) {
Paint p = new Paint();
p.setARGB(500, 0, 255, 0);
canvas.drawLine(100,50,100,400, p);
}
//清除
void clear(Canvas canvas) {
Paint p = new Paint();
p.setARGB(255, 0, 0, 0);
Rect rect = new Rect(0, 0, SurfaceView01.getWidth(),
SurfaceView01.getHeight());
canvas.drawRect(rect, p);
}
先謝謝各位大大幫忙了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.18.104.12
推
08/03 17:56, , 1F
08/03 17:56, 1F
→
08/03 23:38, , 2F
08/03 23:38, 2F