2014-09-01 58 views
0

enter image description here如何獲取空洞上的繪圖元素大小?

我正在做一個「帶面具的繪製」應用程序。當用戶在屏幕上拖動時,它將清除部分遮罩。

我實現它通過cavans與setXfermode清除

// Specify that painting will be with fat strokes: 
drawPaint.setStyle(Paint.Style.STROKE); 
drawPaint.setStrokeWidth(canvas.getWidth()/15); 

// Specify that painting will clear the pixels instead of paining new ones: 
drawPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); 

cv.drawPath(path, drawPaint); 

的問題是,我怎麼能得到的空間清理百分比?它沒有必要是準確的,只是粗略地檢測出更多的時屏幕尺寸的一半以上都很乾淨。感謝您的幫助

回答

1

你需要做的是轉換你canvas和計數在它black pixels數量。使用簡單的數學算法,您可以將黑色像素的數量除以畫布中的像素數量,這會給出黑色像素的百分比。

樣品taken from this post

public float percentTransparent(Bitmap bm) { //pass the converted bitmap of canvas 
    final int width = bm.getWidth(); 
    final int height = bm.getHeight(); 

    int totalBlackPixels = 0; 
    for(int x = 0; x < width; x++) { 
     for(int y = 0; y < height; y++) { 
      if (bm.getPixel(x, y) == Color.BLACK) { 
       totalBlackPixels ++; 
      } 
     } 
    } 
    return ((float)totalBlackPixels)/(width * height); //returns the percentage of black pixel on screen 

} 
+0

真是令人印象深刻。這項工作很棒。最後一個問題是,是否可以進行估算,而不是1像素乘1像素?對於我的情況,它不需要準確的 – user782104 2014-09-01 10:18:14

+0

@ user782104如果它有助於感謝你,我就不會想到有一個來自後稱爲「蒙特卡羅方法」的文章,它是快速的,而不是逐個像素地計數 – 2014-09-01 18:53:23