2011-02-02 72 views
1

我画4条线(canvas.drawLine)为了绘制一个矩形。有没有可能填充矩形区域? (我知道android有一个rectDraw。我的只是好奇)onDraw填充形状创建与canvas.drawLine

在此先感谢。


ok ..我也是一个路径创建了一个路径段。遵守代码..请解释如何填补内部区域?

`Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);    
    paint.setStrokeWidth(2); 
    paint.setColor(android.graphics.Color.RED); 
    paint.setStyle(Paint.Style.FILL_AND_STROKE); 
    paint.setAntiAlias(true); 
    path.reset(); 
    path.setFillType(Path.FillType.INVERSE_EVEN_ODD);  
    path.moveTo(mPin[0].getX() + 10, mPin[0].getY() + 10); 
    path.lineTo(mPin[1].getX() + 10, mPin[1].getY() + 10); 

    path.moveTo(mPin[1].getX() + 10, mPin[1].getY() + 10); 
    path.lineTo(mPin[3].getX() + 10, mPin[3].getY() + 10); 

    path.moveTo(mPin[3].getX() + 10, mPin[3].getY() + 10); 
    path.lineTo(mPin[2].getX() + 10, mPin[2].getY() + 10); 

    path.moveTo(mPin[2].getX() + 10, mPin[2].getY() + 10); 
    path.lineTo(mPin[0].getX() + 10, mPin[0].getY() + 10); 
    paint.setShader(new LinearGradient(0, 0, 0, getHeight(), Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR)); 
    c.drawPath(path, paint);` 

回答

2

如果您将线段绘制为路径,则可以填充矩形。但是,为了填补由四个不相连但相互交叉的线段组成的区域,我想你必须编写自己的例程。搜索“洪水填充”或“种子填充”。

+0

感谢我带你去看看。 – Blackbelt 2011-02-03 14:08:01

1

不使用的drawLine但是,创建Path对象:

protected void onDraw(Canvas canvas) { 


    Paint paint = new Paint(); 
    paint.setStyle(Paint.Style.FILL); 
    paint.setColor(Color.parseColor("#FFA800")); 


    Path path = new Path(); 

    path.moveTo(0, 0); 
    path.lineTo(getWidth()/2, 0); 
    path.lineTo(getWidth(), getHeight()/2); 
    path.lineTo(getWidth()/2, getHeight()); 
    path.lineTo(0, getHeight()); 
    path.lineTo(0, 0); 

    canvas.drawPath(path, paint); 

} 
+0

感谢您的回答! – Blackbelt 2015-10-08 16:43:23