See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Java 2D - Wikipedia

Java 2D

出典: フリー百科事典『ウィキペディア(Wikipedia)』

Java 2D は、Javaにおいて2次元コンピュータグラフィックスの描画に使われるAPIである。Java 2D の描画操作は、図形を描き、それを塗りつぶし、ディスプレイ上でその結果を合成するものと言える。

目次

[編集] 構成

Java 2D とその文書は JDK 6 に一部としてダウンロード可能である。Java 2D API クラスは JDK 6 の以下のパッケージにある。

  • java.awt - Java Abstract Window Toolkit のメインパッケージ
  • java.awt.geom - 直線、楕円、四角形などの基本的2次元図形に関する標準ライブラリ
  • java.awt.font - 字体操作のためのライブラリ
  • java.awt.color - 色を様々な方法で扱うためのツール群
  • java.awt.image - 画像を操作するためのライブラリ
  • java.awt.image.renderable
  • java.awt.print - 印刷のためのツール群

[編集] 基本概念

以下のオブジェクト(インタフェース)は、Java 2D での描画操作に必須の部分である。

[編集] Shape

shape は、太さのない境界線で内側と外側を区切ったものである。内側のピクセルは描画操作で変更され、外側は影響を受けない。

単なる直線の場合、内側が存在しないので塗りつぶしても何も変化しない。従って、直線を描きたいときは細長い長方形を使って内側を塗りつぶす。

[編集] Paint

paint は、塗りつぶし操作でピクセルに使用するを生成する。最も単純な paint は java.awt.Color であり、全てのピクセルに同じ色を生成する。色の変化を伴う paint や、画像を描画する paint、任意の色の組合せを生成する paint などもある。円形の shape に黄色の塗りつぶしを施せば、黄色の円が描画される。画像を生成する paint を使って円の塗りつぶしを行えば、その画像を円形に切り取った画像が生成される。

[編集] Composite

描画操作では、source(paint が生成しようとしているピクセル群)と destination(既に描画されたピクセル群)がある。通常、source は単に destination を上書きするが、composite によってその動作を変更できる。

composite に source と destination を指定すると、画面に最終的に現れる画像が生成される。典型的な composite として java.awt.AlphaComposite があり、描画するピクセルが半透明であるかのように扱うので、destination のピクセルもある程度見える。

[編集] 塗りつぶし

shape を塗りつぶすとき、各ピクセルが内側なのか外側なのかを判定する必要がある。内側のピクセルは塗りつぶし操作の影響を受ける。境界線上のピクセルは、アンチエイリアスが有効になっていれば、ある程度だけ影響を受けることになる。

paint を使って、各ピクセルに設定すべき色が生成される。単色の塗りつぶしの場合、各ピクセルには同じ色が設定される。

composite が paint によって設定された色と画面上に既にある色とを考慮し、最終的な色を決定する。

[編集] その他のオブジェクト

以下のオブジェクトは、上述の単純なオブジェクトによる描画で必要に応じて使われる。

[編集] Transform

Java 2D の描画操作は、transformの対象となり、回転させたり、切り取ったり、拡大・縮小したりできる。最も一般的な transform は identity transformであり、何もしない。

transform を使った塗りつぶしは、単に新たな変換された shape を生成し、それを塗りつぶしたように見える。

[編集] Stroke

fill(塗りつぶし)操作だけでなく、Java 2D は draw 操作も提供している。fill では shape の内側を描画したが、draw では輪郭線を描画する。輪郭線としては、単純な実線もあれば、各線分の端が丸められた破線もある。

輪郭線を生成するオブジェクトは stroke である。入力として shape を与えられると、stroke はその形の輪郭線を表す shape を新たに生成する。例えば、太さのない線が stroke によって1ピクセル幅の多角形に変換されたりする。

従って、draw 操作は、 stroke を使って新たな shape を作成し、それを塗りつぶすものと言える。

技術的には、stroke は shape を入力として新たな shape を生成するためだけに必要とされる。Java 2D では輪郭線を描くために stroke が実装されているが、stroke を直接使って任意の図形を生成することも可能である。

[編集] 最適化

概念的には、Java 2D で黒い直線を描くのは、直線の shape を生成し、現在の transform に従って変換し、stroke によって細長い四角形の shape を生成し、その shape に対してピクセル位置を問合せ、java.awt.Color.BLACK を使ってピクセルを生成し、composite に従ってそれを画面上に表示するという一連の動作からなる。

しかし、このようなステップを毎回実行するのは効率的でない。Java 2D では、これらのステップを省略できるような最適化を施している。塗りつぶしが単純な単色だった場合、個々のピクセルの色を問い合わせる必要はない。同様に、完全に不透明な重ね合わせの設定なら、composite 操作は不要であり、無駄である。

Java 2D は省略可能な手順は可能な限り省略して、上述の全ステップを実施したのと同じ見た目を生成する。これにより、柔軟性と高速性を両立させている。

[編集] 出力先

以上の説明は、話を単純にするため、出力先がディスプレイであると仮定していた。しかし、実際の出力先はプリンタでも、メモリでもよいし、Java 2D のコマンドを受け取って解釈しベクターイメージファイルを生成するオブジェクトでもよい。

[編集] Java2D と OpenGL の関係

Java SE 6 の build 51 以降、Java 2D と OpenGL の連携が可能となった。例えば、ボタンのアイコンとして3次元グラフィックスのアニメーションを使うこともできる。

[編集] 関連項目

[編集] 外部リンク


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -