2017-11-04 6 views
0

私はswingを使ってペイントプログラムを作ろうとしています。楕円、線、矩形など、ユーザーが描くことができるいくつかの図形があります。シェイプは、さまざまなストローク(線の太さ)で描くことができ(graphics2dを使用)、塗りつぶしまたは塗りつぶすことができます。スイングペイントプログラム - 選択の処理方法は?

私は、ユーザーがマウスの右ボタンで図形をクリックしてドラッグして移動できるような機能を実装しようとしています。

私の現在の戦略は、形状の配列を逆の順序でポーリングすることです(複数の形状の場合は、最近追加されたものを選択します)。

各シェイプの実装にはisSelected(int x, int y)というメソッドがあります。ポイントが形状に当てはまるかどうかを判断する方法を理解する必要があります。 1つの課題は、楕円形のような塗りつぶされていない形状は、内側をクリックすると選択されるべきではなく、満たされている場合は選択されるべきであるということです。また、選択はストロークの厚さに対応する必要があります。つまり、ラインの正確な中心だけでなく、より厚いストロークを使用する場合は、外側の領域をクリックしてラインを選択する必要があります。

これを実行するにはどうすればよいですか?

+0

質問をチェックするに応じて、「どのように」あなたは形状を保持しているに依存します。 Javaのグラフィックス2d APIは、いくつかの事前定義されたシェイプを持つ「シェイプ」の概念をサポートしています。これらは、指定された点が境界内にあるかどうかを判断する機能を含んでいます – MadProgrammer

+0

このAPIから2dシェイプを実装するカスタムタイプの配列を格納しています – Airhead

答えて

1

私は、あなたが使用することができ、このAPIから

を2D形状を実装するカスタム型の配列を格納しています:

は、あなたが持っている情報と、何を

+0

これは機能しますが、塗りつぶした/ – Airhead

+0

どういう意味ですか?私はあなたが実際に何かを実装した方法についての文脈がないので、さらなる提案をするのは難しいです。 – MadProgrammer

+0

@Airhead MadProgrammerによって提案されたものは、塗りつぶされた形と塗り潰されていない形を処理できるはずです。あなたはそれをテストしましたか? – user3437460

関連する問題