2017-11-12 9 views
0

形状が描画されるたびにPhotoshopのような個別のエンティティとして一般的に描画する方法はありますか?オブジェクトが削除されたときに削除、移動、削除が可能なオブジェクトコード内のオブジェクトを削除し、キャンバスバックグラウンドで同じオブジェクトを描画するのではなく、描画するJPanelまたはキャンバスから削除します。JPanel上で、JPanelのコードに関連する矩形を描画する方法(Photoshopのように選択、削除、などが可能)

たとえば、Grahpics2Dを使用して四角形を描くと、次のようなコマンドが使用されます。

 @Override 
    public void paintComponent(Graphics canvas){ 

     super.paintComponent(canvas); 

     ((Graphics2D) canvas).drawRect(20,20,100,100);   
     } 

この描画された矩形は、左上の頂点の位置と幅と高さに関連付けられています。 Rectangleオブジェクトには関連付けられていないので、描画後にその矩形を参照する方法はありません。

+0

もしあなたが 'MVC'に精通していれば、上記のコードは' View'部分だけを持つようなものです。あなたの図面の状態を追跡するために 'Model'(' Rectangle'オブジェクト)がそこに配線されている必要があります。しかし、この質問はあまりにも広すぎてここで答えることはできません。 – Kayaman

+0

基本的な 'GraphPanel'が引用されています[ここ](https://stackoverflow.com/a/10129994/230513) – trashgod

+0

私に似たような質問のリンクを教えてください。 @Kayaman –

答えて

1

この描画された矩形は、左上の頂点の位置と幅と高さに関連付けられています。 Rectangleオブジェクトには関連付けられていないので、描画後にその矩形を参照する方法はありません。

ShapeオブジェクトのArrayListeを作成します。 Shapeオブジェクトは、Rectangle、Ellipse、Polygonなどです。次に、paintList()メソッドで、ArrayListを繰り返して、各Shapeをペイントします。

したがって、ArrayListにはあなたのRectangleへの参照が含まれています。

あなたがPlaying With Shapesをチェックアウト後、本当に空想を取得したい場合はCustom Painting Approaches

で見つかったDraw on Component例をご覧ください。シェイプを実際のコンポーネントにすることができます。

関連する問題