2

我画了 4 条线(canvas.drawLine)来画一个矩形。有没有可能填充矩形的区域?(我知道android有一个rectDraw。我的只是好奇)

提前致谢。


好的..我还创建了一个路径段。按照代码..请你解释一下如何填充内部区域?

    `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);`
4

2 回答 2

4

不要使用 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);

}
于 2015-10-08T16:29:02.960 回答
2

如果将线段绘制为路径,则可以填充矩形。但是要填充由四个未连接但相交的线段界定的区域,我认为您必须编写自己的例程。搜索“洪水填充”或“种子填充”。

于 2011-02-02T15:08:54.163 回答