繁体   English   中英

如何使用Java2D绘制内部笔划

[英]How to draw inner stroke with Java2D

我只想绘制尺寸正好为15x15像素的圆圈,并且有填充和轮廓。 我正在使用Java2D。 问题是,由于后来被称为Graphics2D.fill(circle)Graphics2D.draw(circle)因此绘制了16x16像素的圆。 这是因为内部的Java2D outlinig机制,它对于给定的15x15大小提供了16x16的圆形轮廓。 此外,如果我要求Java2D绘制14x14像素的圆形轮廓 - 它精确地绘制14x14像素。 我试图玩抗锯齿和渲染渲染器的中风提示没有运气。
插图 这是:

  1. RenderingHints.VALUE_STROKE_NORMALIZEEllipse2D.Double(0, 0, 15, 15)大纲
  2. RenderingHints.VALUE_STROKE_PURE和相同的轮廓 - 注意1px失真
  3. 上一个笔画提示和Ellipse2D.Double(0, 0, 14, 14)
  4. RenderingHints.VALUE_STROKE_NORMALIZEEllipse2D.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM