『ブラシ』メニューの『画像』メニュー項目を選ぶと、画像を選ぶダイアログが現れて、
そこで選んだ画像がブラシとして使えるようにします。しかしアプレットでは次のように
サンプルの画像をブラシに使います。
作品ダウンロード
このように、ローカル時とアプレット時で異なる動作をさせる方法は、以前で作成した
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クラスのコードを以下に示します。 ■■■■を正しく変更ください。
←正しく修正してからクリックください。
←わからない場合は、クリック