我正在处理一项任务,其中包括诸如道路“长度”(以“毫米”为单位)之类的数据。根据规范,我的 JFrame 应该是 4 米 * 3 米(如何将其转换为设备坐标...?)。
现在,我至少知道这些数据是真实世界的数据,而不是设备的像素数据。然而,在找到一些来源后,您实际上可以通过 Graphics2D 类将这些数据转换为像素。
我找到这些信息的资源是,
Core Java 2, Volume II - Advanced Feature, Author - Cay S. Horstmann & Gary Cornell
但是,我在谷歌上搜索了实际的例子,但没有成功。
有谁知道我可以阅读更多相关信息的来源。如果您有任何示例表明有人实际做过类似的事情,那将提供更多信息。
Research so far : So far I know that we need to give a assumptions to Graphics2D class of number of pixels in meters. In Graphics2D there is method which helps you to set this assumption. Method is ,
g2D.scale(pixelsPerMeter, pixelsPerMeter);
//And than I can draw a line with meter or millimetre coordinates
g2D.draw(new Line2D.Double(coordinates in meter));
I tried above code but really hard to draw line where I actually want to.
理解的任何帮助都会非常有帮助。
谢谢
最佳答案
我发现创建一个更容易
java.awt.geom.AffineTransform
对象并自己将坐标从米转换为像素。
在您的情况下,请使用 AffineTransform.getScaleInstance(sx, sy)
。
然后我调用 Graphics2D
函数来绘制我的线和多边形
使用像素坐标。
这使得调试更容易:你可以看到之前的坐标值 以及改造后。
Java 教程中的高级主题部分描述了如何
使用 Graphics2D
进行转换,示例如下:
http://download.oracle.com/javase/tutorial/2d/index.html
关于java - 坐标转换困境,用户坐标到设备坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7286064/