2013-06-20 83 views
1

我寫了一個代碼並在android 4.0.3上測試;一切正常。現在我在android 4.2.2上測試它,並且填充方法不起作用。我已經簡化問題,這裏是一個僞代碼顯示了真正的問題:Android 4.2.2 Region.getBoundaryPath()圖

Paint testpaint = new Paint(); 
testpaint.setColor(Color.BLACK); 
testpaint.setAlpha(255); 
testpaint.setStyle(Paint.Style.FILL); 

Path p = new Path(); 
p.moveTo(10, 10); 
p.lineTo(200, 10); 
p.lineTo(200, 250); 
p.lineTo(10, 200); 
p.lineTo(10,10); 
p.close(); 

RectF rectF = new RectF(); 
Region rr = new Region(); 
p.computeBounds(rectF, false); 
rr.setPath(p,new Region((int) rectF.left, (int) rectF.top, (int) rectF.right, (int) rectF.bottom)); 

//works 
RegionIterator ri = new RegionIterator(rr); 
Rect rect = new Rect(); 
int count = 0; 
while (ri.next(rect)){ 
    canvas.drawRect(rect, testpaint); 
    count++; 
} 

//works 
canvas.drawPath(p, testpaint); 

//doesn't work 
canvas.drawPath(rr.getBoundaryPath(), testpaint); 


//works 
Path outline = rr.getBoundaryPath(); 
Path newpath = new Path(); 
Matrix matrix = new Matrix(); 
matrix.setScale(1, 1, 0, 0); 
outline.transform(matrix,newpath); 
canvas.drawPath(newpath, testpaint); 

第一和第二平局使得它的工作,但第三個卻沒有。如果我做一個零輪換,那麼它也可以工作。有沒有人有一個想法,爲什麼(我需要getBoundaryPath版本),爲什麼它在4.0.3上工作?據我所知,

+0

,另一個測試: \t \t //工作 \t \t路徑輪廓= rr.getBoundaryPath(); \t \t \t Path newpath = new Path(); \t \t \t Matrix matrix = new Matrix(); \t \t \t matrix.setScale(1,1,0,0); \t \t \t outline.transform(matrix,newpath); \t \t canvas.drawPath(newpath,testpaint); – user2506832

回答

-1

getBoundaryPath()返回bool。也許試試rr.boundaryPath這應該返回路徑。

+0

不,它不。顧名思義,它返回一個Path。 –