Java2D を使用してマップを描画しようとしています。マップをズームアウトすると、道路が描画アーティファクトでいっぱいになります。これは、完全な米国の州を描画するときの画面の一部です。
これは、ズームインしたときの道路の同様のセクションです。
使用される線のスタイルは、幅が 2 ピクセルに相当するようにスケーリングされた青い実線です。さまざまなレンダリングのヒントと行結合ルールを試しましたが、何も役に立たないようです。
OS/X 10.8 を実行している Mac で Open JDK 1.7 を使用していますが、これは Sun JDK 1.6 を搭載した Linux マシンでも再現可能です。
すべての形状と変換は、Java2D で可能な限り倍精度です。線のジオメトリには、間隔の狭い点が多数あります。描画アーティファクトの原因は、1 ピクセルよりも近い連続した点によってレンダラーが混乱していることだと思います。
ポイントを細くせずにズームアウトした形状の外観を改善する方法はありますか?
編集 描画アーティファクトは、別々の線分が交わる点にあるため、欠落しているピクセルは、終点が同一であっても、ライン キャップ (端) が交わらないことに関係しています。この画像は、2 つの線分が交わる点を示しています。各線分を 7 ピクセルのスケーリングされた線のスタイル (白で XOR 処理) で強調表示しましたが、非常によく見ると、元の青い線の一部がまだ見えます (これは、丸みを帯びたキャップが重なっており、XOR 描画モードによるものです)。 .) 通常の縮尺では両端が重なり合っているように見えますが、通常のペイント モードでズームアウトして元に戻すと、破線の効果があります。
回避策の 1 つは、隣接するすべての線分を結合してから描画することですが、描画アーティファクトの本当の原因を知りたいと思います。