2011-08-23 43 views
3

the method getPixelColor(int x,int y) from the Robot class的工作原理是什麼?我嘗試這樣的代碼片段:我的電腦,這是一個酷睿2上Robot的getPixelColor(int x,int y)方法是如何工作的?

try 
{ 
    Robot robos = new Robot(); 
} 
catch (AWTException e) 
{ 

} 

for (int i = 0; i < 100; i++) 
    robos.getPixelColor(0, 0); 

System.out.println("fsadf"); 

,並花了一秒或更短執行打印語句。然而,當我在我的筆記本電腦上運行這個相同的代碼時,這是一個核心的i3,花費了更多的時間(大約2-3秒)。

這是什麼原因?這是否與屏幕質量或類似的東西?我怎麼解決這個問題?

+0

*花費1秒或更少的時間來執行「*一個聰明的虛擬機可能意識到循環完全沒有(或至少達到)完全沒有任何東西,從而完全消除它。或換句話說,它可能不是硬件,但是虛擬機是不同的,儘管一般的觀點是這樣的:1)不要執行過早的優化; 2)如果代碼確實需要優化,不要將這些瑣碎的,不相關的測試作爲設計決策的基礎。該代碼甚至不會編譯,因爲'robos'在循環中不在顯示範圍內。 –

回答

8

我該如何解決這個問題?

請勿使用機器人逐像素地獲取顏色。使用Robot創建屏幕的BufferedImage。然後,您可以使用BufferedImage的getRGB()方法來獲取表示像素顏色的int值。然後你可以使用這個int創建一個Color Object,或者直接解析出紅色/綠色/藍色值。

+0

以及像使用機器人一樣使用機器人究竟有什麼錯誤? – blenddd

+1

沒有什麼錯,它只是不是很有效,因爲你已經注意到了。要進行一次系統調用來創建圖像要比數千次系統調用一次獲取像素效率高得多。 – camickr

+0

嗯,你可以顯示我一個小代碼片段如何使用這個getRGB? – blenddd

相關問題