2013-06-20 40 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。 –