2017-08-16 8 views
1

言語:Java FX複数の画像を同時にズームするjavafx

目的は、ズーム機能(デジタルとタイルの両方のズーム)を使用することです。 タイルズームは、ズームしている領域に対応する次の画像セットをロードすることを意味します。

のJava FXにおける:::経験は、非常に限られているので、それは非常に困難

1.を進めるために見つける助けてください、私は ビューポートを設定することに他ならないのズーミングのための1つの実装を持っています画像ビュー。

ズーミングのための別の実装では、ズーム要求に応じて、次の実際ズームを表すされた画像の がロードされる設定である

imageView.setViewport(new Rectangle2D(x, y, width, height)); 

このデジタルズームを呼び出すことができますエリア。

私の問題は、最初の溶液が唯一の1枚の画像をサポートするために開発されている

for (int xNavigation = xWindowStart; xNavigation <= xWindowEnd; xNavigation++) { 
       for (int yNavigation = yWindowStart; yNavigation <= yWindowEnd; yNavigation++) { 
        count++; 
        try { 
         image1 = new Image(new FileInputStream(
           Constants.PATH_TILL_FOLDER + tileZoom + "/" + xNavigation + "_" + yNavigation + Constants.FILE_EXTESNION 
         )); 
         ImageView imageView1 = new ImageView(); 
//      System.out.println("Zoom levels::::" + tileZoom); 
         imageView1.setX(xval); 
         imageView1.setY(yval); 

         imageView1.setFitHeight(image1.getHeight() * digitalZoomLevel); 
         imageView1.setFitWidth(image1.getWidth() * digitalZoomLevel); 
         imageView1.setPreserveRatio(true); 
         imageView1.setImage(image1); 

         root.getChildren().add(imageView1); 
         //System.out.println("X"+imageView1.getX()); 
         //System.out.println("Y"+imageView1.getY()); 

         yval = yval + image1.getHeight() ; 

//      System.out.println("Going to paint image :" + xNavigation + "-" + yNavigation); 

        } catch (FileNotFoundException ex) { 
         Logger.getLogger(DataZoom.class.getName()).log(Level.SEVERE, null, ex); 
        } 

       } 
       yval = 0; 
       xval = xval + image1.getWidth(); 

      } 
      System.out.println("Number of images painted tile" + count); 
      System.out.println("Tile Zoom"); 

このタイルズームを呼び出すことができます。どのように 私は複数の画像のためのデジタルズームを扱うだろうか?

なぜ複数の画像をズームするのですか?例えば、一連の画像によるモナリザの画像。

答えて

0

問題が正しく解決されていないかどうかはわかりません。一度に複数の画像をズームしたいのはなぜですか?

とにかく、スレッドを使用する必要がある場合は、画像のロード方法に問題が発生する可能性があります。

または、小さなステップで画像を更新し、各ステップの後に別の画像で同じように行うことで、マルチスレッドにすることができます。この場合、あなたのためにその仕事をする追加のループが1つ必要です。

一度に1つの画像にズームしたいだけで、ウィンドウ内に複数の画像がある場合は、問題を解決するのがかなり簡単です。現在、どのイメージにフォーカスがあるかを実装するだけで済みます。

+0

。例えば、一連の画像によるモナリザの画像。そして、今私は単一のイメージのようにそれをズームする必要があります – Gerrard

+1

申し訳ありませんが、それは非常にトリッキーです。ズームインしたりズームアウトしたりすると、各画像の新しい位置を計算するアルゴリズムを作成する必要があります。計算は実際の問題ではありませんが、そのプロセスを最適化するにはしばらく時間がかかります –

+0

まさに男です。簡単な方法があるかどうか疑問に思っていました;-) – Gerrard

関連する問題