[英]How to draw inner stroke with Java2D
我只想绘制尺寸正好为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和任何奇数)。 有没有办法绘制某种内部笔划,它填充形状内边缘的像素?
看起来“1”是你想要的选项,但你有一个一个一个错误。 0,0到15,15实际上应该是16像素。 如果你想要15个像素,你需要0到14,14。
如果它是具有预定义颜色的15x15,您可以在一些图像编辑程序中预渲染并使用drawImage。
您还可以考虑按.5,.5进行翻译。 当你做Ellipse.Double(.5,.5,15.5,15.5)时,看看#2的样子你可能会对这个结果更满意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.