我只想绘制尺寸正好为15x15像素的圆圈,并且有填充和轮廓。我使用的是Java2D。问题是,由于后续调用了Graphics2D.fill(circle)
和Graphics2D.draw(circle)
,所以绘制了16x16像素的圆圈。这是因为内部的Java2D outlinig机制,它对于给定的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绘制15px圆形轮廓(也是13 px,29 px和任何奇数)。有没有办法绘制某种内部笔划,它填充形状内边缘的像素?
答案 0 :(得分:0)
看起来“1”是你想要的选项,但你有一个一个一个错误。 0,0到15,15实际上应该是16像素。如果你想要15个像素,你需要0,0到14,14。
如果具有预定义颜色的特定15x15,您可以在一些图像编辑程序中预渲染并使用drawImage。
您还可以考虑按.5,.5进行翻译。当你做Ellipse.Double(.5,.5,15.5,15.5)时,看看#2是什么样子你可能会对这个结果更满意。