Androidに黒い境界線で塗りつぶされた長方形を描く方法はありますか?私の問題は、canvas.draw()が1つのPaintオブジェクトを取得することです。塗りつぶしとストロークの色が異なります。これを回避する方法はありますか?
境界線の色と長方形のサイズに境界線を加えた長方形を描画し、ペイントの色を変更して、通常のサイズで長方形を再度描画します。
ペイントしてみてください。setStyle(Paint.Style。[〜#〜] fill [〜#〜])および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);
}
複数のビューを描画する場合は、ストローク用と塗りつぶし用の2つのペイントを使用することもできます。そうすれば、それらをリセットし続ける必要はありません。
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
}