2012-04-04 198 views
-1

我有this圖片,我希望能夠讀取每個單獨的圖片,將其加載到繪圖方法中,並將鼠標偵聽器添加到每個顏色點,但不是任何黑色背景。我不希望將任何黑色背景作爲「按鈕」,只有彩色斑點有自己的鼠標偵聽器,因此我可以區分我按下的是哪個顏色斑點。有沒有人有任何想法?謝謝!Java圖片顏色區域區別

+0

你考慮過機器人課嗎?您可以將該點添加到相應的LinkedList中,然後在單擊鼠標時可以找到包含該點的列表,然後對其執行操作。 – 2012-04-04 00:33:27

+0

機器人課程是否允許我在每個彩色區域的區域存儲每個值,以便測試它? – MrDrProfessorTyler 2012-04-04 00:35:29

+0

機器人類可以從某處開始掃描顏色:如果它是紅色,則將該點添加到紅色列表中。等 – 2012-04-04 00:36:39

回答

1

我想你可以這樣來解決:

List<Shape> buttons = ... 

for each pixel in the picture, top left to bottom right { 
    if the pixel is not black { 
     if the pixel is not already contained in one of the buttons { 
      iterate over every pixel towards the right until you reach a different color 
      iterate over every pixel towards the bottom until you reach a different color 

      // now you have the bounds of your button 
      // create a new Rectangle and add it to your list. 
     } 
    } 
} 

我從來沒有嘗試這樣的事情,也沒有我測試了上面的方法,但對我來說似乎應該工作。

爲什麼你不能複製圖片JButton s和JPanel s並簡化你的生活?

+0

嗯,我需要讓用戶編輯一個圖片文件到他們的佈局首選項,這可能是任何事情,所以我需要能夠做到這一點,但它是一個好主意,我會試試看,謝謝。 – MrDrProfessorTyler 2012-04-04 01:02:45

1

mouseListener返回一個位置,所以我將使用該位置來檢查相應像素處的圖像,然後執行所需的操作。如果像素變成黑色,那麼你簡單的什麼都不做。

可以通過BufferedImage對象和Raster檢查圖像。

或者,可以通過BufferedImage和Raster檢查圖像,併爲每個顏色方塊所在的位置創建相應的對象,分別打印和處理每個顏色。