2012-04-04 10 views
-1

私はthisの画像を持っています。個々の画像を読み込み、ペイント方法にロードして、色の各スポットにマウスリスナーを追加しますが、黒い背景は追加できません。黒い背景のどれかを「ボタン」として含めることは望ましくなく、色のついた斑点には独自の紋様があるので、私が押した色の斑点を区別することができます。誰にもアイデアはありますか?ありがとう!Java Picture Color Area Distinctishing

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. 
     } 
    } 
} 

私はこのような何かをしようとしたことがありません、また私は、上記の方法をテストしているが、私にはそれが必要のように思える:私はあなたがそれをこのように近づくことができたと

+0

あなたはロボットクラスを考えましたか?対応するLinkedListにポイントを追加してマウスクリックすると、そのポイントを含むリストを見つけてその上でアクションを実行できます。 –

+0

Robotクラスは、私がそれをテストできるように、私は各色の領域の領域にすべての値を格納することができますか? – MrDrProfessorTyler

+0

ロボットクラスは、あるポイントで色をスキャンすることができます。赤色であれば、そのポイントを赤いリストに追加します。等 –

答えて

1

作業。

なぜJButton秒とJPanel秒の画像を複製するだけで、簡単にできないのですか?

+0

私はこれを行うことができるようにする必要があるので、レイアウトの設定に画像ファイルを編集するユーザーを取得する必要がありますが、私はそれを試してみましょう良いアイデア。 – MrDrProfessorTyler

1

mouseListenerは場所を返すので、対応するピクセルの画像を検査するためにその場所を使用し、必要な処理を行うために分岐します。ピクセルが黒であることが判明した場合は、何もしないでください。

イメージは、BufferedImageオブジェクトとRasterを介して検査できます。

また、BufferedImageとRasterを介して画像を検査し、各色の四角形に対応するオブジェクトを作成し、それぞれ別々に印刷して処理することもできます。