2000年7月6日更新(マウスによるベジェ曲線の作成アプレット)
  関谷トップページへ CGトップページへ   作者へのメッセージ

図形処理・計算処理実習No.11 Javaでのグラフィックス(6)中山第8章 Java2D

2000.07.05 KPC 情報技術科  関谷

1. 前回のJavaグラフィックス(5)の復習とコメント

 前々々回からは、テキストのJavaプログラムでの例題のファイル(サーバにコピーしたもの)を紹介した。index.htmlファイルで目次ページになっているので、Javaでの実行画面例とjavaソースリストが見れる。今後は、これを参照しながら、学習していく。

第7章 マルチメディア

 マルチメディアとは、複合媒体(文字、映像、音声など)であり、双方向の通信可能な媒体である。サウンドや静止画像、アニメーションに挑戦してみる。
 サンプルのプログラムの動作を確認したら、ソースプログラムを改造して、タイトル(プログラム名や作成者名,年月日など)を表示したり、ファイル名を表示したりして、何をどうしているのかを説明するものを追加すること。
 Rドライブ(ファイルサーバ)の\sekiya\図形処理\java2F_szフォルダに、F1.javaからF6t.javaまでのsekiyaが改造した例を、参考にして良い。

例5 GraphicsF5.java

 画像ファイルをファイルダイアログで選択して読み込んで、オリジナル・サイズのほかに拡大・縮小をチョイスで指定して表示する。
(6.28午後の補足追加)このアプリケーションをアプレットに変更したものGraphicsF5t.html(,java,class)をファイルサーバにコピーしているので、参照のこと。変更点については、このページの最後の3.2に再録している。
 ただし、IE5.0では、ファイルダイアログが起動しないので、予め、1つの画像ファイルを読み込むようにしている。(appletviewerでは、正常にダイアログから読める。)

1.6 前回の実習とWebレポートへのコメント

 Javaのプログラム構造を考察すること。(クラスやイベント処理)
 そして、第7章のJavaプログラムの改造をする。あるいは、逆の順序でも良いが。

 アプリケーションからアプレットプログラムへの変換は、少し,面倒ではあるが、慣れて欲しい。
(アプリケーションとアプレットとを共用にしなければ、簡単になる。)

 (参考)鍋田さんのWebページには、Appletに変更した画像に落書きするプログラムがある。宝満さんのページでは、画像をチョイスするプログラムをまだ、デバッグ中。

 

2.今日の学習-Javaでのグラフィックス(6) 第8章 Java2D

 Java2Dとは、AWTの機能を向上させて、とくにグラフィックスやテキスト、画像を、より効果的に表現し、2Dグラフィックスや2Dイメージ操作を向上させたもので、Java2のコアAPIに組み込まれている。

(注)画面のイメージとソースリストは、ファイルサーバにあるjava2igpのindex.htmlを開けば、ブラウザで一覧できる。
 同じフォルダにソースとバイトコード(*.class)を用意している。アプリケーションプログラムの実行(対話処理)は、java クラス名である。
 サンプルのプログラムの動作を確認したら、ソースプログラムを改造して、タイトル(プログラム名や作成者名,年月日など)を表示したり、ファイル名を表示したりして、何をどうしているのかを説明するものを追加すること。

8.1 Java2Dの導入とグラフィクス

 Java2Dの特徴、パッケージを説明している。

8.2 はじめてのJava2D

8.2.1 Java2Dの考え方

8.2.2 Java2Dによるドロウ操作

8.2.3 Java2Dによるフィル操作

8.3 Java2Dによるグラフィックス処理

8.3.1 基本ストロークの設定

8.3.2 線スタイルパターンの変更

8.3.3 塗り込みスタイルのグラディエーション設定

8.3.4 テクスチャーパターンの設定

8.3.5 グリフ絵文字

8.4 線の経路

8.5 アフィン変換

 これは、slsでのWindowsプログラミングと違って、クラスAffineTransformを使い、簡単にプログラムできる。

8.4.3 マウスによるベジェ曲線の作成

(2000.7.6)例GraphicsG12.javaを、アプレットに変更したものGraphicsG12t.javaを示す。残念ながら、ブラウザIE5.01では、このアプレットが動作しないので、appletviewerで見ることになる。

8.6 Java2Dの応用

8.7 画像のフィルター処理

例G22 画像のフィルタ処理(ConvolveOp)アプレットプログラムに変換した例である。残念ながら、このアプレットは、appletviewerでしか、実行できなかった。

3 実習課題とレポート

3.1 実習課題

テキスト8章の解説を読み、例題をコンパイルし、実行してみる。
それらの中で、皆さんの興味を持った例を詳しく解析し、改造しなさい。
 レポートには、それらの中から、appletに変更して、ハイパーリンクのこと。ただし、画像のファイルを読むプログラムは、appletの場合、テキストp.168の注意にあるように、getImage()の呼び方が違うので、それに合わせて変更のこと。
 javaソースと実行できるappletのほかに、考察をhtmlファイルには追加すること。

(注1)Appletプログラムの作り方については、前5回のプログラム例を参考にするとよい。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ページの形式として、左上に、テキスト名、プログラム名、氏名番号などのタイトル行、さらにパラメータの表示行などを追加すること。

3.2 Webページでのレポート提出

 前2回と同様で、appletタグを持つhtmlファイルへのハイパーリンクとする。(インタラクティブなプログラムでのイメージの貼り付けは、望ましくない。)