###だめぽ
JavaFX8でゲームを作ろうと思い立ったはいいんですが、DirectXで言うDrawRotaGraphが見当たらずひぃひぃ言ってます。
1時間ほどリファレンスとにらめっこして、どうやらGraphicsContextごと回せばいいらしいことはわかりましたがこれでは「複数の画像を表示して1枚だけ傾ける」といった実装ができません。
そこで「GraphicContextが2つあればいんじゃね?」と安易な発想でImageを2つ表示してみましたが2枚の画像は一緒に回ってしまいました。お手上げです。誰か助けてください……。
Java
1//抜粋 2 3 Canvas canvas = new Canvas( 1500, 800 ); 4 root.getChildren().add( canvas ); 5 Image image=new Image("file:C:\\Users\\Admin\\Pictures\\test.png"); 6 7 GraphicsContext gc = canvas.getGraphicsContext2D(); 8 GraphicsContext gc2= canvas.getGraphicsContext2D(); 9 10 final long startNanoTime = System.nanoTime(); 11 12 new AnimationTimer() 13 { 14 public void handle(long currentNanoTime) 15 { 16 double t = (currentNanoTime - startNanoTime) / 1000000000.0; 17 18 Affine af=gc.getTransform(); 19 af.appendRotation(t,500,300); 20 gc.setTransform(af); 21 gc.drawImage(image,500,300); 22 23 Affine af2=af.clone(); 24 af2.appendRotation(0); 25 gc2.setTransform(af2); 26 gc2.drawImage(image,800,500); 27 } 28 }.start(); 29 theStage.show();
↑
抜粋
全文
↓
Java
1//全文 2 3package sample; 4import javafx.animation.AnimationTimer; 5import javafx.application.Application; 6import javafx.scene.*; 7import javafx.scene.canvas.Canvas; 8import javafx.scene.canvas.GraphicsContext; 9import javafx.scene.image.Image; 10import javafx.scene.transform.Affine; 11import javafx.stage.Stage; 12 13 14public class Main extends Application { 15 16 17 int ScreeenFlg=0; 18 public static Main singleton; 19 public Stage stage; 20 21 22 public static void main(String[] args) { 23 Application.launch(args); 24 } 25 26 @Override 27 public void start(Stage theStage) throws Exception { 28 29 theStage.setTitle("画像回転テスト"); 30 Group root = new Group(); 31 Scene theScene = new Scene( root ); 32 theStage.setScene( theScene ); 33 34 Canvas canvas = new Canvas( 1500, 800 ); 35 root.getChildren().add( canvas ); 36 Image image=new Image("file:C:\\Users\\Admin\\Pictures\\test.png"); 37 38 GraphicsContext gc = canvas.getGraphicsContext2D(); 39 GraphicsContext gc2= canvas.getGraphicsContext2D(); 40 41 final long startNanoTime = System.nanoTime(); 42 43 new AnimationTimer() 44 { 45 public void handle(long currentNanoTime) 46 { 47 double t = (currentNanoTime - startNanoTime) / 1000000000.0; 48 49 Affine af=gc.getTransform(); 50 af.appendRotation(t,500,300); 51 gc.setTransform(af); 52 gc.drawImage(image,500,300); 53 54 Affine af2=af.clone(); 55 af2.appendRotation(0); 56 gc2.setTransform(af2); 57 gc2.drawImage(image,800,500); 58 } 59 }.start(); 60 theStage.show(); 61 } 62} 63
###駄目元でCanvasを2つにしてみる
Java
1 GraphicsContext gc2= canvas2.getGraphicsContext2D();
にしても駄目でした。ひーん。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/15 02:33