Java.awt.Graphicsをテキスト第6章を参考に学習した。このテキストでは、マウス操作でのインタラクティブな例題が多い。
ピクセル操作(直線、リサージュ図形、立体的な点描、スプレー描画)
ドロウ操作(直線、多角形、長方形、折線、楕円と楕円弧、フィル操作、フォント操作)
なお、テキストのJavaプログラムでの例題のファイル(サーバにコピーしたもの)を紹介している。i:\archives\java2igp\java2index.htmlファイルがWebサイトの目次ページになっている。このページからのリンクで、各章の例題(Javaでの実行画面例とjavaソースリスト)が見れる。これを参照しながら、学習していく。
例題E3.java:ピクセルで立体球を描く。平方根や階乗の数学的関数を用いて立体的な点描画のユーザ定義のfireball()メソッドを作成して、パラメータを変えてpaint()メソッドで呼び出している。ローカル変数a,b,cを変えると、光の方向などを変えることが可能。いろいろと試してみよう
GraphicsE3p.java:fireball()メソッドのローカル変数から、クラスのstatic変数に変えて、main()の引数から代入すると、実行時点でこれらのパラメータを指定できる。
この例は、コマンドライン引数の受取り方を示している。(サン・マイクロシステムズ、Javaプログラミング講座、アスキー、1996、pp.214-215を参照した。)
GraphicsE3pt.html:fireball()のApplet兼アプリケーションプログラムである。参照した本は、有賀妙子・竹岡尚三著、Java1.1プログラミング、ソフトバンク、1997,pp.161-164などである。
コマンドライン引数とhtmlファイルでのパラメータ指定、テキストフィールドでの更新とボタンによる再描画などを組み合わせている。ソースプログラムGraphicsE3pt.javaはここをクリックする。
3個のスクロールバーを使ってのRGB各諧調データの入力により、色を塗っている。
これをアプレットに変える方法と、を紹介した。GraphicsE18a.java Javaフィル(RGBスクロールバーによる色のツール)(appletソースを参照のこと。
授業に出ていても、前の課題や、他の科目のレポートなどをしていたのでは、その日の課題を学習できない。その繰り返しを止めること。まずは、その日の授業に集中しなさい。
Java言語での図形処理とそのプログラム構造を考察すること。(クラスやイベント処理)
そして、今回の第6章のJavaグラフィックス・プログラムの改造をする。あるいは、逆の順序でも良いが。
アプリケーションからアプレットプログラムへの変換は、少し,面倒ではあるが、慣れて欲しい。
(アプリケーションとアプレットとの共用の例は、上のfireballの例などを参照のこと。共用にしなければ、だいぶ、簡単になる。)
マルチメディアとは、複合媒体(文字、映像、音声など)であり、双方向の通信可能な媒体である。サウンドや静止画像、アニメーションに挑戦してみる。
サンプルのプログラムの動作を確認したら、ソースプログラムを改造して、タイトル(プログラム名や作成者名,年月日など)を表示したり、ファイル名を表示したりして、何をどうしているのかを説明するものを追加すること。
Iドライブ(ファイルサーバ)の\sekiya\図形処理\java2F_szフォルダに、F1.javaからF6t.javaまでのsekiyaが改造した例をコピーしているので、参考にして良い。
Javaアプレットでサウンドを再生することは、比較的容易である。javaスタンドアローンアプリケーションでは、多少複雑な設定となる。
残念ながら、サウンドボードとそのドライバ、スピーカが無いこの教室のパソコンでは、プログラムを起動しても、実際に音を出すことはできない。
サウンドファイルが無いと実行時にエラーになる。サーバのRドライブなどから、コピーしておくこと。
サウンドファイルをファイルダイアログで選択する。
サウンドファイルをファイルダイアログで選択して、複数個読み込んで同時に演奏できる。
Javaアプレットでもアプリケーションでも、画像ファイルの読み込みと表示は、比較的容易である。しかし、テキストp.168に解説があるように、読み込み方が違う。
圧縮したgifとjpgファイルが扱える。
画像ファイルをファイルダイアログで選択して、読み込んでオリジナル・サイズで表示する。
画像ファイルをファイルダイアログで選択して読み込んで、オリジナル・サイズのほかに拡大・縮小をチョイスで指定して表示する。
このアプリケーションをアプレットに変更したものGraphicsF5t.html(,java,class)をファイルサーバにコピーしているので、参照のこと。ただし、IE5.0では、ファイルダイアログが起動しないので、予め、1つの画像ファイルを読み込むようにしている。(appletviewerでは、正常にダイアログから読める。)
画像ファイルをファイル名のチョイスで選択して、キャンバスに表示する。
このアプリケーションをアプレットに変更したものGraphicsF6t.java(,html,class)をファイルサーバにコピーしているので、参照のこと。
画像ファイルを表示しておき、それに落書きや修正ができる。
2つのスレッドの動作の確認。
5枚の1連の画像ファイルを読み込んでおき、マルチスレッドでアニメーションする。
フレームの背景に画像を表示し、スレッド処理で小さな画像をその境界でバウンドさせ、リサージュ曲線に沿って移動させる。
画像の表示領域が狭いときや画像サイズが大きすぎるときには、スクロールバーで画像をスクロールする。
いままでの画像は、デジタルカメラで撮ったものをコンピュータに取り込んでJavaマルチメディアプログラミングとしてイメージ操作してきた。配列を用いてImageのピクセル値を画像として生成してみよう。MemoryImageSourceクラスを使う。
水平左から右方向に黒から緑へ変化し、垂直上から下方向に黒から青へ変化し、斜め左上から右下方向に赤から黒へ変化するイメージを作成。
ジュリア集合を描き、IndexColorModelオブジェクトで作成したJavaカラーモデルでジュリア集合の画像を表示する。
画像を幾何的に反転させたり、画像の中の1部分の画像を抽出するためには、java.awt.image.PixelGrabberクラスを使う。
画像をファイルダイアログボックスから読み込み、いろいろな画像反転を確かめられるように、Choiceのプルダウンメニューで選択できるプログラムを作成。
ジュリア集合を描き、IndexColorModelオブジェクトで作成したJavaカラーモデルでジュリア集合の画像を表示する。
画像のピクセルを生成するインターフェイスとしてjava.awt.image.ImageProducerがある。そして、FilterdImageSourceクラスを使って、既存の画像にフィルターをかける。フィルターとしてRGBImageFilterクラスがある。
既存の画像に緑色のフィルターをかけて、フレームに表示するプログラムを作成。
画面の下のほうを徐々に白くする。
ColorModelクラスを用いて、透明度とRGB成分をスクロールバーで調整する。
このアプレットは、ブラウザでは、表示が正しくできないときがある。(2001.6.30追加)
テキスト7章の解説を読み、例題をコンパイルし、実行してみる。
それらの中で、皆さんの興味を持った例を詳しく解析し、改造しなさい。
レポートには、それらの中から、appletに変更して、ハイパーリンクのこと。ただし、画像のファイルを読むプログラムは、appletの場合、テキストp.168の注意にあるように、getImage()の呼び方が違うので、それに合わせて変更のこと。
javaソースと実行できるappletのほかに、考察をhtmlファイルには追加すること。
(注1)Appletプログラムの作り方については、前4回のプログラム例を参考にするとよい。init()メソッドで初期化するほかに、htmlファイルで、窓のサイズを指定している。テキストフィールドでインタラクティブに変えるようにすれば、変化のあるWebページとなる。
GraphicsF5t.javaでの変更内容を以下に示す。 1)先頭に追加 import java.applet.*; 2)class名-ファイル名も-の変更とその派生元のchg(Applet <- Frame) 3)main()をコメントにする/* public static void main(String ar[]) { 4)ボタンの追加(メニューバーに代わる) from MenuBar 5)コンストラクタをinit()に変更・追加(例public void init() <- GraphicsF5()) 6)init()にボタンを生成し追加、アクションシスナーを追加 7)setLayout(new BorderLayout());を追加 8)削除 // addWindowListener(new WinAdapter()); 9)削除 // class WinAdapter extends WindowAdapter { 10)public void actionPerformed(ActionEvent ae) {でのイベント処理の変更(メニューバーを止めて、ボタンの処理に) などである。
なお、fileDialogがIE5.0で動作しなかったので、init()で1つのファイルを読み込むように変更している。
(注2)Webページの形式として、左上に、テキスト名、プログラム名、氏名番号などのタイトル行、さらにパラメータの表示行などを追加すること。
前回と同様で、appletタグを持つhtmlファイルへのハイパーリンクとする。(インタラクティブなプログラムでのイメージの貼り付けは、望ましくない。)そのアプレットで必要なクラスファイル、画像のファイルをftpすること。
なお、ブラウザでは、正常に表示できない場合は、appletviewerのイメージのリンクもお願いします。