2016-11-29 23 views
-1

我正嘗試在Java中創建遠程桌面訪問工具(實際上比任何其他實驗都多),但我在轉換點擊到的點時遇到了問題在主屏幕上的位置。讓我解釋。在較大的顯示器上將720p屏幕轉換爲相對點

Here's an example of how it looks

下面是一個例子工具看起來像(現在)如何。 屏幕捕獲窗口是1280x720,實際屏幕大小不同,我如何獲得鼠標所在的位置並將其更改爲主屏幕上的相同位置?

例如如果我點擊屏幕截圖窗口上的蘋果標誌,它應該移動我的鼠標並點擊主屏幕上的蘋果標誌。我只是無法弄清楚如何在窗口中獲得點,並將其翻譯到主屏幕上的相同點上!

編輯:這就是我想要做的ATM:

MouseAdapter adapter = new MouseAdapter() { 
     @Override 
     public void mouseMoved(MouseEvent e) { 
      PacketMoveMouse packetMoveMouse = new PacketMoveMouse(address, e.getXOnScreen(), e.getYOnScreen()); 
      sendPacket(address, packetMoveMouse); 
     } 

     @Override 
     public void mousePressed(MouseEvent e) { 
      Point point = this.getPoint(e.getPoint()); 
      PacketClickMouse packetClickMouse = new PacketClickMouse(address, point.getX(), point.getY(), e.getButton()); 
      sendPacket(address, packetClickMouse); 
     } 

     private Point getPoint(Point point) { 
      SwingUtilities.convertPointFromScreen(point, panel); 
      return point; 
     } 
    }; 

我也試過不轉換點,我只是想各種各樣的事情。它正確地移動鼠標,但錯誤的一點。

我也試圖將其轉換爲使用一些基本的數學在主屏幕上的一個點,但我認爲我的邏輯缺陷,這裏是我的嘗試:

  Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); 
      int x = ((PacketMoveMouse) packet).getX(); 
      int y = ((PacketMoveMouse) packet).getY(); 
      double xRatio = (screenRect.getWidth()/1280); 
      double yRatio = (screenRect.getHeight()/720); 

      Robot robot = new Robot(); 
      robot.mouseMove((int) ((x * xRatio)), (int) ((y * yRatio))); 

這是我剛剛發送的常規指向客戶端,然後在接收到後轉到相對點。客戶端的顯示屏幕目前爲1280x720。

+0

爲了更好地幫助更快,發佈[MCVE]或[短的,獨立的,正確的示例](http://www.sscce.org/)。 –

+0

*「我只是無法弄清楚如何在窗口中獲得點」*你是說這是**你無法弄清楚的一部分**,或者它只是在那裏導致你是**實際上遇到了麻煩? ..沒關係,MCVE應該清除它。 –

+0

@AndrewThompson我用我試過的一些代碼更新了這篇文章。謝謝 – Erouax

回答

0

爲了讓您的鼠標當前座標

int mouseX; 
int mouseY; 

@Override 
public void mouseMoved(MouseEvent e) { 
    mouseX = e.getX(); 
    mouseY = e.getY(); 

} 
+0

我知道如何獲得這一點,但我試圖將它轉換爲主屏幕上的一個點(從1280x720到客戶端屏幕的任何分辨率)。 – Erouax

相關問題