Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java:如何获得';屏幕';图形对象的尺寸标注_Java_Graphics_Dimensions - Fatal编程技术网

java:如何获得';屏幕';图形对象的尺寸标注

java:如何获得';屏幕';图形对象的尺寸标注,java,graphics,dimensions,Java,Graphics,Dimensions,我正在做一个几何程序,我需要画“无限”线。我的班级有一个方法 public void draw(Graphics2D g){ //... calculate x1,y1,x2,y2 here ... g.draw(new Line2D.Double(x1,y1, x2,y2)); } 我的想法是选择足够大的坐标,使它们远离可见表面。但我不知道,这是我的问题,我怎么知道可见表面角点的坐标?Graphic的方法getClip()听起来不错,但显然它只返回用户之前设置的自定义剪辑。显

我正在做一个几何程序,我需要画“无限”线。我的班级有一个方法

public void draw(Graphics2D g){
    //... calculate x1,y1,x2,y2 here ...
    g.draw(new Line2D.Double(x1,y1, x2,y2));
}
我的想法是选择足够大的坐标,使它们远离可见表面。但我不知道,这是我的问题,我怎么知道可见表面角点的坐标?Graphic的方法getClip()听起来不错,但显然它只返回用户之前设置的自定义剪辑。显然我需要的是文档中的“设备剪辑”

在你建议大长度之前,比如10000,我这里不是指像素大小。我使用变换进行缩放和翻译等,所以10000个很可能是可见的

编辑: 我只是想告诉你我最后做了什么:我为最大屏幕宽度和高度定义了一个相当大的常数(它们可能需要在10年内调整),然后我将当前显示转换的倒数应用于这个“屏幕”,以了解“无限”行的必要长度。 也就是说,问题没有解决,只局限于代码中的一个点。

Rectangle bounds = g.getDeviceConfiguration().getBounds()
你想要什么?我自己也不知道,但只是浏览一下文档,这似乎是一个合理的赌注……

怎么样

java.awt.Toolkit.getDefaultToolkit().getScreenSize()
返回具有屏幕大小的维度对象


希望这有帮助。

你也在画什么?全屏,或者类似JPanel的东西?JPanel。但是这个方法不应该关心这个,它只需要g,我不是100%确定,但是我认为在这种情况下,你总是在上角相对于0,0画。视口实际上从未移动过。如果你想在概念上它移动的地方做一些事情,你必须在上面编写代码来管理你自己的视口,这是错误的。但即使这是真的,左上角0,0,这怎么会给我其他的角呢?我还没有遇到过,这实际上是向前迈进了一步。它似乎给了我画布的像素尺寸。我想我现在可以提取变换并对其进行逆变换了。我会尝试,如果在格拉比克坐标系中没有直接的解决方案,我会接受这个答案。@peter:完全有可能有更好的解决方案——这正是我遇到的。恐怕我已经很久没有用Java做过图形了:(我刚试过,不幸的是,当我调整窗口大小时,它似乎没有更新。即使我把它变大了也没有更新。这是一种奇怪的方法…@peter:啊,不清楚你是否想要窗口的剪辑-这种方法会给你设备(即屏幕)不,这也不是真的,它似乎只给出了JPanel的初始大小,接近我的JFrame的setSize值。我现在尝试了g.getDeviceConfiguration().getDevice().getDisplayMode().getWidth()但它的作用是相同的。只会报告程序开始时的值。哎呀……刚才注意到上面关于在窗口中的评论。这可能没有什么帮助。我以前遇到过这个问题,并忽略了它。但现在它实际上启发了我对无限线问题的粗略解决方案。不过我仍然对实际尺寸感兴趣,例如,将原点转换为画布中心。