Javaのグラフィックス機能ってなんなんだ?

まさおコンストラクションの拡張クラスとして「MasaoXJSS.class」と「MasaoXJSS2.class」が配布されています。
このクラスを利用することでJavaのグラフィック機能を使うことができます。
正確には

「JavaApplet から JavaScript を呼び出す時に Graphics オブジェクトを渡すと、 JavaScript で Java のグラフィック機能を全て使える」

ということです。(福田直人のホームページより)

このクラスファイルには

import java.awt.*;
import java.awt.event.*;

が記述されているので、これらのパッケージで用意されているものを使うことができます。(?) こちらを見たほうが正確です

ここではサンプルプログラムで取り上げられているものを紹介します。


座標について

まさおコンストラクションFXの図形描画メソッドと同様に
アプレット画面の座標です。


setOffscreenColor(R,G,B,アルファ値)

FXのsetPenColor(R,G,B,アルファ値)と同じく
色を指定するメソッドです。
これはJS用メソッドです。
Java:setColor()メソッド


fillRect(左上x座標,左上y座標,幅,高さ)

塗りつぶした長方形を描画するメソッドです。


drawLine(開始x座標,開始y座標,終端x座標,終端y座標)

指定した座標間に直線を描画するメソッドです。


fillOval(x座標,y座標,幅,高さ)

塗りつぶした楕円を描画するメソッドです。
幅と高さを同じ値にすれば綺麗な円が描けます。


drawString("表示した文字列",x座標,y座標)

ダブルコーテーションで囲った文字列を指定した座標から描画するメソッドです。


drawPattern(x座標,y座標,パターンコード,向き)

これはJavaのグラフィックメソッドとは違います。
アプレットの画面上に指定した座標に指定したパターンコードの画像を描画します。
またその向きを指定します。
0-左向き
1-右向き


drawImage(appletタグのidまたはname.getImage(appletタグのidまたはname.getDocumentBase(),"画像ファイル名"),x座標,y座標,ImageObserver)

これに関しては詳しく説明(詳しくないので間違っているかも)

Javaでは画像を扱うにはImage型の変数が必要になります。
このImage型変数にgetImage()メソッドを利用して画像の取得を行う必要があります。

Image img = getImage(getDocumentBase(),"aaa.gif");

getDocumentBase()メソッドは画像データが置かれている標準の場所を示します。
つまり正男があるディレクトリに画像を置いておけばいいわけです。
この段階を踏んで初めてdrawImage()メソッドでアプレット上に画像を描画することができるわけです。
最後にImageObserverについて。
Javaの描画方式では表示の進捗管理、つまり表示が完了しているかなどをを管理する必要があります。
よく分からないのですべてのブラウザに対応させるためにnullとでも書いておいてください。本当はthisのほうがいいかも知れません。

最新版のJavaランタイムでは画像の読み込みに時間がかかるため、newImageOnLoadメソッドで
Imageオブジェクトを取得し、それを第1引数に渡してやるとよい。


drawImage(画像ファイル名,x座標,y座標)

まさおコンストラクションFX Update9で追加されたJavaScript用のメソッド
上のdrawImageはJavaのGraphicsクラスのdrawImageメソッド。
名前は同じで働きも同じであるが、第4引数が無い。
おそらく処理を軽くしただけだと思われるが、詳しくはよく分からないので要調査。


drawRect(x座標,y座標,幅,高さ)

中を塗りつぶさない輪郭線だけの長方形を描画するメソッドです。


setFontSize(数字)

フォントサイズを指定するメソッド(JS)
Java:setFont()メソッド


ここからはサンプルにこそ載っていませんが、こんなのもあるということを紹介


drawOval(x座標,y座標,幅,高さ)

中を塗りつぶさない輪郭線だけの楕円を描画するメソッドです。


drawArc(x座標,y座標,幅,高さ,描画を開始する角度,描画を終了する角度)

中を塗りつぶさない輪郭線だけの円弧を描画するメソッドです。


fillArc(x座標,y座標,幅,高さ,描画を開始する角度,描画を終了する角度)

塗りつぶした円弧を描画するメソッドです。パックマン…


clearRect(x座標,y座標,幅,高さ)

矩形を描画するメソッドです。ただし、黒で塗りつぶされる。(アプレットの背景?)


setColor(new Color(R,G,B))

色を指定する


setFont(new Font("フォント名",書体,サイズの数値))

フォントを指定する


draw(fill)Polygon(x座標の配列名,y座標の配列名,頂点の個数)

調べました。
多角形を描画するメソッドです。
x座標とy座標を1次の配列として用意しておきます。 配列は0から始まります。
三角形を描画したい場合は、x座標,y座標の配列を0‾2の3個用意し、頂点の個数は3個なので3と記述します。
あとは塗りつぶし三角形を描画したいなら例えば○○.fillPolygon(xdata,ydata,3);と記述すればいいです。

draw(fill)3DRect(x座標,y座標,true or false)

調べました。
長方形に1ピクセル分、陰影をつけた長方形を描画できます。
使い方は同じですが、3つめの引数にboolean型変数を渡してやる必要があります。
trueとすると影を施し、falseにすると影を描画しません。普通に長方形を描画します。


drawPolyline(x座標の配列名,y座標の配列名,個数)
draw(fill)RoundRect(x座標,y座標,幅,高さ,4隅の孤の水平方向の直径,4隅の弧の垂直方向に直径)