2017-10-28 10 views
1

非常に簡単な質問を背景に影響を与えることなく、描画をクリアするには、私はJavaFXのドキュメントまたはStackOverflowの中で答えを見つけることができませんでした:JavaFXの:どのように

私はJavaFXのキャンバスはグラフ(strokeLineに様々なコール(で満たされてい) 、ここの問題ではない)。私は、このグラフの上に矩形を描き、背景のグラフに影響を与えずに矩形を単にクリアする必要があります。 (元に戻す操作のように)。

コード四角形を描画する(「P」と「E」がポイントです):最も明白な答えはclearRect()メソッドを使用することです

gc.rect(p.getX(), p.getY(), e.getX()-p.getX(), e.getY()-p.getY()); 
gc.stroke(); 

が、問題はそれもクリアしていることです背景のグラフの部分...

したがって、問題は、ストローク()で作成された図面を、バックグラウンドで他の図面に影響を与えずにクリアする方法です。

+0

シェイプを操作する必要がある場合は、それらをペイン、アンカーパネルまたはグループに追加し、それらを移動したり、サイズを変更したり、いつでも削除したりしてください。あなたはCanvasをうまく使用することができますが、その場合は、シェイプの量に応じて、シェイプのすべての情報をArrayListなどのどこかに保持し、変更を適用するたびにすべてを再描画する必要があります(削除/移動など)このプロセスは非常にCPU /メモリを消費する可能性があります。 – JKostikiadis

答えて

2

キャンバスではできません。

キャンバスは、ペイント操作の結果のみを保存します。 これは、キャンバスの関心事で、同じ行を何百万行もスクロールすることができ、結果を保存して表現し、より多くのメモリを消費することはありません。

グラフの上に何かを描く必要がある場合は、他のキャンバスをグラフ上に置き、2番目のキャンバスに描画する必要があります。

1

キャンバスをグループに入れておき、必要に応じていつでも削除できる矩形ノードをグループに追加すれば、JavaFXのやり方がもっと簡単になるかもしれません。

関連する問題