2001年7月2日更新
  関谷トップページへ CG2001 トップページへ   作者へのメッセージ

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

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

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

第7章 マルチメディア

 マルチメディアとは、複合媒体(文字、映像、音声など)であり、双方向の通信可能な媒体である。サウンドや静止画像、アニメーションに挑戦してみる。
 サンプルのプログラムの動作を確認したら、ソースプログラムを改造して、タイトル(プログラム名や作成者名,年月日など)を表示したり、ファイル名を表示したりして、何をどうしているのかを説明するものを追加すること。そして、アプレットにして、Webページで動かす。

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

 Javaのプログラム構造を考察すること。(クラスやイベント処理)
 そして、第7章のJavaプログラムの改造をする。あるいは、逆の順序でも良いが。
小生が改造した画像セレクターGraphicsF6t.javaでは、ファイル名をチョイスに表示するため、クラス間でのオブジェクトのやりとりを行っている。これの解説は、i:\sekiya\図形処理\20010625.txtの古田さんへのメールに説明した。
 アプリケーションからアプレットプログラムへの変換は、少し,面倒ではあるが、慣れて欲しい。
 アプレットヴューワでは正常に見れるのに、ブラウザでは、表示が不良の場合がある。なお、ブラウザでの表示がローカルでは正常で、Webサーバでのブラウザでの表示が正しくない場合は、必要なクラスファイルや画像ファイルがftpされていないと考えられる。あるいは、ファイル名が全角とか大文字/小文字の違いなどがある。

 No.9での例題2つを組み合わせて、カラーでの直線模様を白石さんに作ってもらった。そのアプレットでの作品をオープンキャンパス用の図として使うそうです。小生も、白石さんのカラーラインアプレットを参考にしてカラースプレイを作ってみた。少し、Javaグラフィックスを知ったことになる。

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.4.3 マウスによるベジェ曲線の作成

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

8.5 アフィン変換

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

8.5.1 AffinTransformクラス

8.5.2 アフィン変換による回転

8.5.3 アフィン変換によるシア

8.5.4 アフィン変換による拡大・縮小

8.6 Java2Dの応用

8.6.1 テクスチャフォントペイント

8.6.2 幾何図形のクリッピング

8.6.3 透明度

8.6.4 幾何図形の論理演算

8.7 画像のフィルター処理

 画像でも、フーリエ変換により、模様の位置変化の割合を、周波数の割合に置き換えることが可能になる。

8.7.1 フィルター処理クラス

 Java2Dでは、多くのフィルター処理に関するクラスが追加された。
 画像データのアクセス可能なバッファをもったBufferdImageクラスを使う必要がある。

8.7.2 エッジ強調とぼかし-ConvolveOpクラス-

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

8.7.3 コントラスト強調

3 実習課題とレポート

3.1 実習課題

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

(注1)Appletプログラムの作り方については、前5回のプログラム例を参考にするとよい。init()メソッドで初期化するほかに、htmlファイルで、窓のサイズを指定している。テキストフィールドでインタラクティブに変えるようにすれば、変化のあるWebページとなる。

(注2)Webページの形式として、左上に、テキスト名、プログラム名、氏名番号などのタイトル行、さらにパラメータの表示行などを追加すること。

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

 前2回と同様で、appletタグを持つhtmlファイルへのハイパーリンクとする。(インタラクティブなプログラムでのイメージの貼り付けは、望ましくない。)ただし、ブラウザでは、正常に動作しないものは、アプレットビューアでの貼り付けを加えること。