3
我正在使用下面的代碼捕獲繪圖。爲了改變描邊顏色或寬度,我打電話給setPaintAttribute()
方法。但是,當我改變顏色時,整個繪圖會發生變化,包括我之前繪製的線條。我怎樣才能改變油漆的顏色,並保持前面的圖紙不變?我試圖創建一個新的路徑,但之前的繪圖消失。更改繪畫顏色時,現有筆畫也會更改
public void setPaintAttributes(float STROKE_WIDTH, int color)
{
paint=new Paint();
paint.setAntiAlias(true);
paint.setColor(color);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeWidth(STROKE_WIDTH);
}
public boolean onTouchEvent(MotionEvent event) {
scrollView.requestDisallowInterceptTouchEvent(true);
btnSaveSignature.setEnabled(true);
btnSaveSignature.setBackgroundResource(R.drawable.save);
float eventX = event.getX();
float eventY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(eventX, eventY);
lastTouchX = eventX;
lastTouchY = eventY;
return true;
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
resetDirtyRect(eventX, eventY);
int historySize = event.getHistorySize();
for (int i = 0; i < historySize; i++) {
float historicalX = event.getHistoricalX(i);
float historicalY = event.getHistoricalY(i);
path.lineTo(historicalX, historicalY);
}
path.lineTo(eventX, eventY);
break;
}
invalidate((int) (dirtyRect.left - HALF_STROKE_WIDTH),
(int) (dirtyRect.top - HALF_STROKE_WIDTH),
(int) (dirtyRect.right + HALF_STROKE_WIDTH),
(int) (dirtyRect.bottom + HALF_STROKE_WIDTH));
lastTouchX = eventX;
lastTouchY = eventY;
return true;
}
private void resetDirtyRect(float eventX, float eventY) {
dirtyRect.left = Math.min(lastTouchX, eventX);
dirtyRect.right = Math.max(lastTouchX, eventX);
dirtyRect.top = Math.min(lastTouchY, eventY);
dirtyRect.bottom = Math.max(lastTouchY, eventY);
}
喜,任何人都有解決辦法。?我正在努力解決這個問題。請幫幫我。 – Karthick 2013-03-03 08:40:19
此更新?..? – Karthick 2013-03-04 05:32:56
觸摸屏幕時,僅觸摸識別,沒有繪製點。這是Android簽名捕獲的問題嗎? – Karthick 2013-03-05 05:35:09