Canvasによるグラフィック描画 (5/5)
作成:2015-01-17 11:11
更新:2015-01-17 11:11
更新:2015-01-17 11:11
■イメージファイルを利用する
より複雑なグラフィックを描画したい場合は、あらかじめ描画するグラフィックをイメージファイルとして用意しておき、これをロードして描画するのがよいでしょう。あらかじめImageインスタンスを用意しておき、それを描画すればいいのです。
この場合の「Image」は、AWTのImageではありません。例によって、javafx.scene.imageパッケージに用意されているクラスです。ですから、AWT/Swingのときとは微妙に異なります。
・Imageインスタンスの作成
Imageインスタンスの作成はいろいろなやり方がありますが、とりあえずこの書き方だけ覚えておけばいいでしょう。引数に、読み込むイメージファイルのパスをStringで指定しておけば、これをロードしたImageインスタンスが作成されます。
○Imageの描画
これも、GraphicsContextクラスにメソッドが用意されています。これは描画のやり方に応じていくつかのものがあります。主なメソッドをまとめておきましょう。
・指定位置にイメージを描画
・指定の領域にイメージを変形して描画
・イメージの一部をCanvasの指定領域に描画
では、実際にイメージファイルを描画してみましょう。例として、「sample.jpg」というイメージファイルを読み込んでCanvasに表示するサンプルを下に掲載しておきます。
ここでは、new Image("sample.jpg");というようにしてsample.jpgを読み込んでいいます。Javaのプログラムは、プログラムファイルが配置されている場所がカレントディレクトリとなるので、同じ場所にsample.jpgを用意して実行してみてください。
この場合の「Image」は、AWTのImageではありません。例によって、javafx.scene.imageパッケージに用意されているクラスです。ですから、AWT/Swingのときとは微妙に異なります。
・Imageインスタンスの作成
変数 = new Image( パス );Imageインスタンスの作成はいろいろなやり方がありますが、とりあえずこの書き方だけ覚えておけばいいでしょう。引数に、読み込むイメージファイルのパスをStringで指定しておけば、これをロードしたImageインスタンスが作成されます。
○Imageの描画
これも、GraphicsContextクラスにメソッドが用意されています。これは描画のやり方に応じていくつかのものがあります。主なメソッドをまとめておきましょう。
・指定位置にイメージを描画
《GraphicsContext》.drawImage(《Image》, 横位置 , 縦位置 );・指定の領域にイメージを変形して描画
《GraphicsContext》.drawImage(《Image》, 横位置 , 縦位置 ,
横幅 , 高さ );
・イメージの一部をCanvasの指定領域に描画
《GraphicsContext》.drawImage(《Image》, 横位置1 , 縦位置1 ,
横幅1 , 高さ1 , 横位置2 , 縦位置2 , 横幅2 , 高2さ );
では、実際にイメージファイルを描画してみましょう。例として、「sample.jpg」というイメージファイルを読み込んでCanvasに表示するサンプルを下に掲載しておきます。
ここでは、new Image("sample.jpg");というようにしてsample.jpgを読み込んでいいます。Javaのプログラムは、プログラムファイルが配置されている場所がカレントディレクトリとなるので、同じ場所にsample.jpgを用意して実行してみてください。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
package com.tuyano.libro;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
public class AppController implements Initializable {
@FXML Canvas canvas;
GraphicsContext gc;
@Override
public void initialize(URL location, ResourceBundle resources) {
gc = canvas.getGraphicsContext2D();
draw();
}
void draw(){
Image image = new Image("sample.jpg");
gc.drawImage(image, 0, 0);
}
}
※関連コンテンツ