如何在画布上绘制矩形并设置描边颜色?

14

我想画一个描边为蓝色且填充为红色的圆角矩形,但是在Paint类中找不到设置描边颜色的方法。我该怎么做?

    mCanvas.drawColor(mBackgroundColor, PorterDuff.Mode.CLEAR);
    mCanvas.setDrawFilter(mPaintFlagsDrawFilter);

    mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
    mPaint.setColor(Color.RED);
    mPaint.setStrokeWidth(2);
    mPaint.setStrokeCap(Paint.Cap.ROUND);
    mRectF.set(0, 0, mWidth, mHeight);
    mCanvas.drawRoundRect(mRectF, 10, 10, mPaint);

2
使用FILL样式绘制红色矩形,然后在同一位置使用STROKE样式绘制蓝色矩形。 - Mike M.
1个回答

27

Paint 只允许一次只能选择一种颜色。

mCanvas.drawColor(mBackgroundColor, PorterDuff.Mode.CLEAR);
mCanvas.setDrawFilter(mPaintFlagsDrawFilter);

mFillPaint.setStyle(Paint.Style.FILL);
mFillPaint.setColor(Color.RED);
mStrokePaint.setStyle(Paint.Style.STROKE);
mStrokePaint.setColor(Color.BLUE);
mStrokePaint.setStrokeWidth(2);
mStrokePaint.setStrokeCap(Paint.Cap.ROUND);
mRectF.set(0, 0, mWidth, mHeight);
mCanvas.drawRoundRect(mRectF, 10, 10, mFillPaint);
mCanvas.drawRoundRect(mRectF, 10, 10, mStrokePaint);
如果您发现您的圆角矩形看起来不对劲,可能被裁剪在视图边界。调整RectF以允许半个StrokeWidth:
mRectF.set(1, 1, mWidth - 1, mHeight - 1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接