『ブラシ』メニューの『画像』メニュー項目を選ぶと、画像を選ぶダイアログが現れて、
そこで選んだ画像がブラシとして使えるようにします。しかしアプレットでは次のように
サンプルの画像をブラシに使います。
作品ダウンロード
このように、ローカル時とアプレット時で異なる動作をさせる方法は、以前で作成した
Painterクラスのインスタンス変数 flagAppletで行います。
こらがtrueのアプレットであれば"octopus.gif"のリソースをブラシに使い、
そうでないローカル起動の時は、ダイアログ(BrushDialog)で画像を選ばせます。
いずれの場合も、『円』と同じダイアログを利用することにします。
そこで、画像のURLを引数としてBrushDialogの画像を
設定するメソッドを、drawFileの名前で次のように作成します。
//メモリイメージに、ファイル画像を描画し、それを自身とPaintPanelのブラシに指定する。
public void drawFile(java.net.URL imgURL)
{
Image img = null;
try{
img = javax.imageio.ImageIO.read(imgURL);// ファイルからイメージを作成
}
catch (Exception err){
JOptionPane.showMessageDialog(this, "ファイル読み取りに失敗しました。");
return;
}
int w = img.getWidth(this);//ロードイメージのサイズ取得
int h = img.getHeight(this);
// System.out.println(w +"," + h);
bufImg = new BufferedImage(w, h, BufferedImage.TYPE_4BYTE_ABGR);//イメージ生成
Graphics2D g2 = (Graphics2D)bufImg.getGraphics();
g2.drawImage(img, 0, 0, this);//生成したイメージに描画
this.paintPanel.brushImg = bufImg;//PaintPanelのブラシを変更
this.paintPanel.setPreferredSize(new Dimension(w, h)); //適切なサイズを設定
this.imgSize.setSize(new Dimension(w, h));
}
あとは『画像』のメニュー項目処理でBrushDialogを生成し、上記メソッドを使って ブラシダイアログの画像を変更します。この処理を行うPainterクラスのコードを以下に示します。 ■■■■を正しく変更ください。
←正しく修正してからクリックください。
←わからない場合は、クリック