【发布时间】:2014-10-28 22:50:04
【问题描述】:
我只想画一个大小正好为 15x15 像素的圆圈,并有填充和轮廓。我正在使用 Java2D。问题是,由于依次调用Graphics2D.fill(circle) 和Graphics2D.draw(circle),绘制了 16x16 像素的圆。这是因为内部的 Java2D 轮廓机制,对于给定的 15x15 尺寸提供 16x16 的圆形轮廓。此外,如果我要求 Java2D 绘制 14x14 像素的圆形轮廓 - 它恰好绘制 14x14 像素。我尝试使用渲染器的抗锯齿和笔触提示,但没有运气。
这里是:
-
RenderingHints.VALUE_STROKE_NORMALIZE和Ellipse2D.Double(0, 0, 15, 15)大纲 -
RenderingHints.VALUE_STROKE_PURE和相同的轮廓 - 注意 1px 失真 - 上一个笔划提示和
Ellipse2D.Double(0, 0, 14, 14) -
RenderingHints.VALUE_STROKE_NORMALIZE,Ellipse2D.Double(0, 0, 15, 15)轮廓和抗锯齿提示
所以,我不能用 Java2D 绘制 15 像素的圆形轮廓(还有 13 像素、29 像素和任何奇数大小)。有没有办法绘制某种内部笔划,填充形状内边框的像素?
【问题讨论】:
-
恕我直言,在 java Grapics/Graphics2D 库中没有办法做到这一点,因为我过去面临同样的问题并且找不到任何合理的解决方案。无论如何,如果您不想更改图形库,选项 1 和 4 看起来不错。