【发布时间】:2012-11-12 19:19:07
【问题描述】:
在 Android 中有什么方法可以绘制一个带有黑色边框的填充矩形。我的问题是 canvas.draw() 需要一个绘画对象,据我所知,绘画对象不能为填充和描边使用不同的颜色。有没有办法解决这个问题?
【问题讨论】:
-
你是对的。只需先绘制填充的矩形,然后在外部绘制笔划。
标签: android border android-canvas paint fill
在 Android 中有什么方法可以绘制一个带有黑色边框的填充矩形。我的问题是 canvas.draw() 需要一个绘画对象,据我所知,绘画对象不能为填充和描边使用不同的颜色。有没有办法解决这个问题?
【问题讨论】:
标签: android border android-canvas paint fill
你用边框的颜色和矩形加上边框的大小绘制一个矩形,你改变油漆的颜色并再次用正常大小绘制矩形。
【讨论】:
尝试绘画。setStyle(Paint.Style.FILL) 和绘画。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);
}
【讨论】:
drawRoundRect 作为动态半径(基于矩形大小)
如果您要绘制多个视图,那么您还可以使用两种颜料,一种用于描边,一种用于填充。这样您就不必一直重置它们。
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
}
【讨论】: