2016-10-15 19 views
1

ImageView.setRotate(40)は、どの参照ポイントでJavafxでイメージを回転しますか?回転イメージin Javafx

私は

ImageView iv = new ImageView(image); 
iv.setRotate(40); 
SnapshotParameters params = new SnapshotParameters(); 
params.setFill(Color.TRANSPARENT); 
Image rotatedImage = iv.snapshot(params, null); 
gc.drawImage(rotatedImage, 0, 0); 

を書いていますが、画像は、画像の中心に対して回転しません。 rotate() documentationから

答えて

0

:回転が起こるについて

ピボット点は、非形質転換layoutBoundsの中心です。

したがって、画像はその中心点を中心に回転します。

サンプル:

import javafx.application.Application; 
import javafx.scene.*; 
import javafx.scene.SnapshotParameters; 
import javafx.scene.canvas.Canvas; 
import javafx.scene.image.*; 
import javafx.scene.paint.Color; 
import javafx.stage.Stage; 

public class Rotor extends Application { 

    public static final String LOC = 
      "http://icons.iconarchive.com/icons/custom-icon-design/flatastic-10/64/Bear-icon.png"; 

    @Override 
    public void start(Stage stage) throws Exception { 
     ImageView iv = new ImageView(new Image(LOC)); 
     iv.setRotate(40); 

     SnapshotParameters params = new SnapshotParameters(); 
     params.setFill(Color.TRANSPARENT); 
     Canvas canvas = new Canvas(100, 100); 

     Image rotatedImage = iv.snapshot(params, null); 
     canvas.getGraphicsContext2D().drawImage(rotatedImage, 0, 0); 
     stage.setScene(new Scene(new Group(canvas))); 

     stage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 

bear

あなたがキャンバスに回転した画像を描画しているとして、あなたはこれを実現するために役立つキャンバスは、スナップショット方式ではなく、変換を使用したい場合があります。例えば参照: