AndroidのCanvasの描画でsetAntialias()すべき時、すべきでない時

AndroidのCanvasで直接何かを描画する時に、ギザギザ(ジャギー)を恐れてとりあえずPaint.setAntialias(true)していた。

確かにギザギザにはならないのだけど、このように滲んでしまうことがある。


同じ設定で線を引いているのだけど、場所によって色が薄くなったり、太さが微妙に違う。

エミュレーターのせいかとも思ったが、実機で動作させても同じ。何が問題なのか?と思ったら、どうやらsetAntialias(true)がマズかったらしい。

setAntialias(false)でアンチエイリアスをOFFにするとこのようにクッキリ正しく描画されたから。


教訓。つまり、AndroidのCanvasの描画では何でもかんでもアンチエイリアスをかけてはいけないということ。

アンチエイリアスすべき時
  • 角度をつけた直線を描画する時
  • 角度をつけた矩形を描画する時
  • 円・楕円を描画する時
  • 文字を描画する時
など。

アンチエイリアスすべきでない時
  • 角度がつかない直線を描画する時
  • 角度がつかない矩形を描画する時
など。

コメント

このブログの人気の投稿

レオナルド・ダ・ビンチはなぜノートを「鏡文字」で書いたのか?

macでsmb(samba)共有サーバーに別名で接続(別アカウント名で接続)する方法

Google DriveにCURLでアップロードするには?