【发布时间】:2012-08-10 17:58:51
【问题描述】:
我正在尝试使用 Java2D 绘制地图。当我的地图被缩小时,我的道路上到处都是绘画文物。这是绘制完整美国州时屏幕的一小部分:
放大后这是一段类似的路段:
所使用的线条样式是一条蓝色实线,其宽度缩放为相当于 2 个像素。 我尝试了各种渲染提示和线连接规则,但似乎没有任何帮助。
我在运行 OS/X 10.8 的 Mac 上使用 Open JDK 1.7,这也可以在装有 Sun JDK 1.6 的 Linux 机器上重现。
Java2D 中的所有形状和变换都尽可能是双精度的。 线条的几何形状有许多紧密间隔的点,我怀疑绘图伪影的原因是渲染器被比单个像素更近的连续点弄糊涂了。
有没有办法在不细化点的情况下改善缩小形状的外观?
编辑 绘图伪影位于单独的线段相交的点,因此丢失的像素与线帽(末端)不相交有关,即使端点相同也是如此。此图像显示了两条线段之间的交汇点。我以 7 像素缩放的线条样式(与白色异或)突出显示了每个线段,但如果您仔细观察,您仍然可以看到原始蓝线的一部分(这是由于圆顶重叠和 XOR 绘制模式.) 在普通比例下,两端似乎重叠,但在普通绘画模式下缩小和返回时,会出现折线效果。
一种解决方法是在绘制之前将所有连续的线段连接在一起,但我仍然想知道绘制伪影的真正原因。
【问题讨论】:
标签: java graphics java-2d shapes