java - 坐标转换困境,用户坐标到设备坐标?

标签 java swing awt java-2d graphics2d

我正在处理一项任务,其中包括诸如道路“长度”(以“毫米”为单位)之类的数据。根据规范,我的 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/

相关文章:

JavaFX:通过调整窗口大小来调整 GridPane 的大小

java - 在 Java 中的 Swing 中自己的布局

java:映射和哈希表之间的区别

java - 我试图在java中绘制正方形,但它不起作用

java - 扩展 JFrame 与在程序中创建它

java - awt/swings 中显示网页并访问它的最佳组件

java - 类转换异常 - 鼠标事件

java - 整洁架构。方案的理解

java - 如何添加监听器

java - 在java中的Jframe上绘制简单的矩形