0

我正在尝试为我的屏幕捕获程序获取多显示器设置中左上角位置的坐标。这是我目前为该程序获得的内容:

        int dwidth = 0, dheight = 0; //max dimensions of all monitors
    for (GraphicsDevice gd : GraphicsEnvironment
            .getLocalGraphicsEnvironment().getScreenDevices()) {
        if (gd == GraphicsEnvironment.getLocalGraphicsEnvironment()
                .getDefaultScreenDevice()) {
            minx = -width; //My attempt at finding the minimum X value did not work
        }
        dwidth += gd.getDisplayMode().getWidth();
        dheight += gd.getDisplayMode().getHeight();
    }

基本上我希望能够在所有监视器上运行我的程序。在此处查看完整代码:https ://gist.github.com/fletchto99/5788659

4

2 回答 2

1

在 Java 中,图形库中的坐标系从屏幕的左上角开始。因此,您的代码应始终等同于简单说明:0, 0.

于 2013-06-15T19:00:04.723 回答
1

您可以从 中获取GraphicDevices的列表GraphicsEnvironment。每个GraphicsDevice都代表一个屏幕。

现在,你有很多选择...

您可以简单地查看列表GraphicsDevices并简单地找到具有最低 x/y 坐标的那个,或者您可以将它们全部组合成一个“虚拟屏幕”并从中提取顶部/左侧坐标。

例如...

public static Rectangle getVirtualScreenBounds() {

    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice lstGDs[] = ge.getScreenDevices();

    Rectangle bounds = new Rectangle();
    for (GraphicsDevice gd : lstGDs) {

        bounds.add(gd.getDefaultConfiguration().getBounds());

    }

    return bounds;

}
于 2013-06-16T05:22:48.197 回答