我有一個活動,用戶觸摸圖片上的眼睛位置,這應該在每個圖片上畫一個白色的圓圈。我有一段代碼,使用Android FaceDetector工具查找眼睛位置和麪部中點並繪製矩形。該代碼的繪圖部分僅供參考:奇怪的畫布/位圖問題
private void drawRectangles(){
Canvas canvas = new Canvas(mBitmap);
Paint paint = new Paint();
paint.setStrokeWidth(2);
paint.setColor(Color.BLUE);
paint.setStyle(Style.STROKE);
for (int i=0; i < faceFrames.length; i++) {
RectF r = faceFrames[i];
if (r != null){
canvas.drawRect(r, paint);
Log.d(TAG, "Drew rectangle");
}
}
mImageView.setImageResource(0);
mImageView.setImageBitmap(mBitmap);
mImageView.draw(canvas);
}
這部分沒有問題。我想,因爲一個被從調用的onTouchEvent方法,我可以使用以下方法來繪製一個圓:
private void makeDrawableLayer(int x, int y, int touchCount){
if (touchCount == 1){
Bitmap eyeOneBmp = Bitmap.createBitmap(mBitmap);
Canvas c1 = new Canvas(eyeOneBmp);
c1.drawCircle(x, y, 5, eyePaint);
mImageView.setImageResource(0);
mImageView.setImageBitmap(eyeOneBmp);
mImageView.draw(c1);
}
}
以下是示出每個代碼段的結果的屏幕截圖。第一張照片是在臉上繪製的矩形。第二張圖片顯示了當我嘗試使用第二個代碼段進行繪製時得到的非常奇怪的結果。但請注意,繪製第二個輸出時,我已將x和y指定爲10,10作爲圓的位置。當我給它傳入的眼睛位置座標時,就是同樣的事情,只是像素化的圓圈來自任何眼睛。
有沒有人知道這種行爲會發生什麼?
非常感謝。
爲什麼你叫mImageView.draw (C1)?這會將ImageView繪製到位圖上。 – alanv
@alanv - 我只是將ImageView繪製到位圖上,因爲我已經在矩形繪製方法中完成了該操作。如果我刪除那行代碼,根本沒有任何反應。 – nectaris