CanvasにDrawTextしたときのテキストをなめらかにする

AndroidのCanvasにDrawTextすると表示がギザギザなのに驚くことでしょう。なんと、DrawTextはそのまま使うとアンチエイリアス無しで表示されるのです。これを解決するための方法を紹介します。

PaintクラスのsetAntiAliasを実行する

対処方法は、PaintクラスのsetAntiAliasに引数trueを渡すことです。

            // 文字列を出力する
            paint.setStyle(Paint.Style.FILL_AND_STROKE);
            paint.setStrokeWidth(1);
            paint.setTextSize(30);
            paint.setColor(Color.argb(255, 10, 10, 255));

            paint.setAntiAlias(true);

            int interval = sp / dpi;
            int price_label = (int)min_price;
            for (int i = 0; i <= (diff_price / sp); i++) {
                int y = (chart_height - bottom_offset) - i * interval;
                if (y < 0) break;
                canvas.drawText(String.valueOf(price_label), 30, top_offset + y, paint);
                price_label = price_label + sp;
            }

作成中の株価チャートアプリだと、こんなコードになりました。
呼び出すだけなので簡単ですね。

antialias

システム開発

Posted by @erestage