0

長くなるほど細くなるはずの線があります。問題は、ピクセルが薄くなるとジャンプがはっきりと見えることです。Androidでサブピクセルレンダリング/アンチエイリアスを実行する方法はありますか?

canvas.drawRect()float値を取りますが、それらを無視します。コードは次のとおりです。

@Override
protected void onDraw(Canvas canvas) {
    float width = getMeasuredWidth() / (float) getMeasuredHeight()  * getMinimumHeight();
    float left = (getMeasuredWidth() - width) / 2.0f;
    canvas.drawRect(left, 0, left + width, getMeasuredHeight(), paint);
    super.onDraw(canvas);
}

ペイントオブジェクトがANTI_ALIAS_FLAG有効になり、単色が含まれています。

これがデフォルトの行です。

デフォルト行

これは、それが長くなり、薄くなるときです。全体の移行をスムーズにするように見えますが、側面にアンチエイリアシングが必要です。

細い線

4

1 に答える 1

0

これはより良い仕事をするようです:

@Override
protected void onDraw(Canvas canvas) {
    float width = getMeasuredWidth() / (float) getMeasuredHeight()  * getMinimumHeight();
    float left = (getMeasuredWidth() - width) / 2.0f;
    paint.setStrokeWidth(width * getResources().getDisplayMetrics().density);
    canvas.drawLine(left, 0, left, getMeasuredHeight(), paint);
    super.onDraw(canvas);
}
于 2013-01-18T18:38:37.930 に答える