线条在画布上显得微弱

时间:2015-08-13 21:47:29

标签: java android android-canvas android-drawable

在创建下面的图纸之后,我注意到由于某种原因,一些黑线显得微弱,而其中一些清晰可见。什么代码可以用来确保灰色框之间的黑线宽度正好是1dp而红色矩形的宽度恰好是5dp?

enter image description here

public class RectangleTextView extends View {
    private final Paint mBackPaint = new Paint();
    private final Paint mRedPaint = new Paint();
    private int mSideRectWidth = 10;

    public RectangleTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mBackPaint.setColor(Color.BLACK);
        mRedPaint.setColor(Color.RED);
    }

    @Override protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if (getWidth() == 0)
            return;

        //draw grey boxes
        setBackgroundColor(Color.parseColor("#808080"));
        int boxWidth = getWidth() / 7;

        //draw black line
        for (int i = 0; i < 7; i++) {
            canvas.drawLine(mSideRectWidth + boxWidth * i, 0, mSideRectWidth + boxWidth * i, getHeight(), mBackPaint);
        }

        //draw left end rectangle
        canvas.drawRect(0, 0, mSideRectWidth, getHeight(), mRedPaint);

        //draw right end rectangle
        canvas.drawRect(getWidth() - mSideRectWidth, 0, getWidth(), getHeight(), mRedPaint);
    }
}

1 个答案:

答案 0 :(得分:1)

这是初始化Paint对象的整个方式吗?我不知道默认构造函数使用的默认值。我通常会明确地设置它们:取消ANTI_ALIAS_FLAG,将样式设置为Paint.Style.STROKE并设置所需的笔划width。您需要的某些值可能是默认值,我只是不知道。

处理细线时,关闭ANTI_ALIAS_FLAG可能非常重要。