Java 2D を使用して地形図をレンダリングしています。地形図は次のようになります。
エッジがかなりギザギザになっていることがわかります。地形の端を滑らかにレンダリングしたいのですが、一度に 1 列ずつ地形マップをレンダリングするため、 でアンチエイリアスをオンにしRenderingHints
てもうまくいきません。
地形をレンダリングするコードは次のとおりです。
// terrainImageG2 renders to a BufferedImage, obtained via BufferedImage.createGraphics()
terrainImageG2.setBackground(Color.WHITE);
terrainImageG2.clearRect(0, 0, NUM_WIDE, NUM_HIGH);
terrainImageG2.setStroke(new BasicStroke(1.0F));
terrainImageG2.setColor(Color.BLACK);
for (int x = 0; x < NUM_WIDE; x++) {
terrainImageG2.drawLine(x, NUM_HIGH - originalHeightMap[x], x, NUM_HIGH);
// originalHeightMap contains the height map, ranging from 0 to NUM_HIGH
// originalHeightMap
}
ご覧のとおり、地形を次のdrawLine
ようにレンダリングします:
terrainImageG2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
実際にはエッジをアンチエイリアスしません。RenderingHints のアンチエイリアシングを有効にすると、地形は次のようになります。
手動でアンチエイリアシングを実行してみました。ここでは、一番上のピクセルを黒ではなく明るい灰色にレンダリングします。ただし、これにより、平坦な領域がぼやけて見えますが、急な領域には影響しません。見てみましょう:
手動または API を介して、このエッジをスムーズに描画する方法はありますか? ありがとう