【发布时间】:2011-12-29 19:45:19
【问题描述】:
我正在开发一个几何程序,我需要在其中绘制“无限”线。我的班级 Line 有一个方法
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 年内调整),然后我将当前显示转换的倒数应用于这个“屏幕”知道我的“无限”行的必要长度。 IE。问题没有解决,只限于代码中的一个点。
【问题讨论】:
-
你也在画什么?全屏,还是类似 JPanel 的东西?
-
一个JPanel。但是这个方法不应该关心这个,它只有 g 可以继续。
-
我不是 100% 确定,但我认为在这种情况下,您总是相对于顶角的 0,0 进行绘制。视口实际上从未移动过。如果你想在概念上移动的地方做一些事情,你必须在它上面编写代码来自己管理视口
-
错了。但即使它是真的,左上角 0,0,那如何给我其他角?
标签: java graphics dimensions