onDraw заполнить форму создать с canvas.drawLine - PullRequest
2 голосов
/ 02 февраля 2011

Я рисую 4 линии (canvas.drawLine), чтобы нарисовать прямоугольник.Есть ли возможность заполнить область прямоугольника?(Я знаю, что у андроида есть 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);`

Ответы [ 2 ]

4 голосов
/ 08 октября 2015

Не используйте 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);

}
2 голосов
/ 02 февраля 2011

Вы могли бы заполнить прямоугольник, если вы нарисовали свои отрезки как Путь. Но для того, чтобы просто заполнить область, ограниченную четырьмя не связанными, но пересекающимися отрезками, я думаю, вам нужно написать свою собственную программу. Ищите «заливка заливки» или «заливка семян».

...