gpt4 book ai didi

java - java2d 对象的非破坏性转换

转载 作者:太空宇宙 更新时间:2023-11-04 08:51:27 24 4
gpt4 key购买 nike

我希望能够在由 Path2D.Double 组成的 Java2D 场景上缩放和取消缩放,而无需只需扩大距离即可加粗线条。

我尝试对paintComponent 方法接收的Graphics2D 对象应用转换,但这会使线条更粗。我发现的唯一方法是对线条应用转换(例如 line.transform(AffineTransform.getScaleInstance(2d,2d))),但每次我再次缩放和取消缩放时,都会因为浮点错误而丢失信息。

长话短说:转变是破坏性的。有没有办法说“我想在不修改线条内容的情况下应用该转换来绘制这条线”?

最佳答案

我找到了解决方案:我根据 Graphic2D 中的比例因子更改线宽,这样我就可以将变换应用于 Graphic2D 本身,并且不会破坏 Path2D 中包含的原始坐标。

tr = g.getTransform()
g.transform(AffineTransform.getScaleInstance(scaleFactor,scaleFactor))
g.setStroke(new java.awt.BasicStroke(1.0f/scaleFactor.toFloat))
/* draw lines */
g.setTransform(tr)

关于java - java2d 对象的非破坏性转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3245699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com