Drawing a filled rectangle with a border in android

后端 未结 3 1027
忘掉有多难
忘掉有多难 2020-12-08 18:43

Is there any way in Android to draw a filled rectangle with say a black border. My problem is that the canvas.draw() takes one paint object, and to my knowledge the paint ob

相关标签:
3条回答
  • 2020-12-08 18:53

    You draw a rectangle with the color of the border and the size of the rectangle plus the border, you change the color of the paint and draw again the rectangle with the normal size.

    0 讨论(0)
  • 2020-12-08 18:53

    If you are drawing multiple views then you could also use two paints, one for the stroke and one for the fill. That way you don't have to keep resetting them.

    Paint fillPaint = new Paint();
    Paint strokePaint = new Paint();
    
    RectF r = new RectF(30, 30, 1000, 500);
    
    void initPaints() {
    
        // fill
        fillPaint.setStyle(Paint.Style.FILL);
        fillPaint.setColor(Color.YELLOW);
    
        // stroke
        strokePaint.setStyle(Paint.Style.STROKE);
        strokePaint.setColor(Color.BLACK);
        strokePaint.setStrokeWidth(10);
    }
    
    @Override
    protected void onDraw(Canvas canvas) {
    
        // First rectangle
        canvas.drawRect(r, fillPaint);    // fill
        canvas.drawRect(r, strokePaint);  // stroke
    
        canvas.translate(0, 600);
    
        // Second rectangle
        int cornerRadius = 50;
        canvas.drawRoundRect(r, cornerRadius, cornerRadius, fillPaint);    // fill
        canvas.drawRoundRect(r, cornerRadius, cornerRadius, strokePaint);  // stroke
    }
    
    0 讨论(0)
  • 2020-12-08 18:56

    Try paint.setStyle(Paint.Style.FILL) and paint.setStyle(Paint.Style.STROKE).

    Paint paint = new Paint();
    Rect r = new Rect(10, 10, 200, 100);
    
    @Override
    public void onDraw(Canvas canvas) {
        // fill
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(Color.MAGENTA); 
        canvas.drawRect(r, paint);
    
        // border
        paint.setStyle(Paint.Style.STROKE);
        paint.setColor(Color.BLACK);
        canvas.drawRect(r, paint);
    }
    
    0 讨论(0)
提交回复
热议问题