この記事では、PHP を使用してオブジェクト指向のグラフィックス レイヤーを構築する方法を説明します。オブジェクト指向システムを使用すると、標準の PHP ライブラリで提供される基本機能を使用するよりもはるかに簡単に複雑なグラフィックスを構築できます。
私はグラフィック編集プログラムを 2 つのカテゴリに分類します。1 つはピクセルごとに画像を描画する描画プログラム、もう 1 つは線、楕円、四角形などのオブジェクトのセットを提供する描画プログラムです。これらのオブジェクトを使用して大きな画像を結合できます。 、JPEGなど。ペイント プログラムはピクセル レベルの制御に最適です。ただし、ビジネス グラフィックの場合、ほとんどのグラフィックは長方形、線、楕円で構成されているため、描画プログラムを使用する方が良い方法です。
PHP に組み込まれている基本的な描画操作は、描画プログラムと非常によく似ています。これらは画像を描画する場合には非常に強力ですが、画像をオブジェクトのコレクションにする場合には適していません。この記事では、PHP グラフィックス ライブラリに基づいてオブジェクト指向グラフィックス ライブラリを構築する方法を説明します。 PHP V5 で提供されるオブジェクト指向拡張機能を使用します。
オブジェクト指向グラフィックスのサポートにより、グラフィックス コードの理解と保守が非常に簡単になります。また、単一のグラフィック ソースから複数の種類のメディア (Flash ムービー、SVG など) にグラフィックを合成する必要がある場合もあります。
目標
グラフィカル オブジェクト ライブラリの作成には、次の 3 つの主な目標が含まれます:
基本操作からオブジェクトに切り替えます
このライブラリは、imageline、imagefilledrectangle、その他のグラフィック関数を使用するのではなく、画像の作成に使用できる Line、Rectangle、Oval などのオブジェクトを提供する必要があります。また、より大きく複雑なオブジェクトやグループ オブジェクトを構築する機能もサポートする必要があります。
Z値で並べ替え可能
描画プログラムを使用すると、ペインターはグラフィック オブジェクトを描画面で上下に移動できます。このライブラリは、オブジェクトを他のオブジェクトの前または後ろに配置する機能をサポートする必要があります。このライブラリは、描画面からのオブジェクトの高さを定義する Z 値を使用します。 Z 値が大きいオブジェクトは後で描画され、Z 値が小さいオブジェクトの上に表示されます。
ビューポート変換を提供します
通常、データの座標空間は画像の座標空間とは異なります。 PHP の基本的なグラフィックス操作は、画像の座標平面上で動作します。グラフィックス ライブラリは、プログラマが使い慣れた座標系でグラフィックスを指定し、任意の画像サイズに合わせて自動的に拡大縮小できるように、ビューポート仕様をサポートする必要があります。
ここには非常に多くの機能があるため、コードを段階的に作成して、コードがどのように機能を追加するかを示します。
基礎知識
まず、グラフィックス環境オブジェクトと、Line クラスを使用して実装される GraphicsObject と呼ばれるインターフェイスを見てみましょう。その機能は線を描画することです。 UML を図 1 に示します。
図 1. グラフィカル環境とグラフィック オブジェクト インターフェイス
GraphicsEnvironment クラスは、グラフィックス オブジェクトと、幅と高さを含む色のセットを格納します。 saveAsPng メソッドは、現在の画像を指定されたファイルに出力します。
GraphicsObject は、グラフィックス オブジェクトが使用する必要があるインターフェイスです。このインターフェイスの使用を開始するには、render メソッドを使用してオブジェクトを描画するだけです。これは、開始と終了の X 値、開始と終了の Y 値の 4 つの座標を利用する Line クラスによって実装されます。色もあります。 render が呼び出されると、このオブジェクトは名前で指定された色で sx,sy から ex,ey までの線を描画します。
このライブラリのコードをリスト 1 に示します。
リスト1.基本的なグラフィックスライブラリ
テスト コードをリスト 2 に示します。
リスト2. 基本的なグラフィックライブラリのテストコード
このテスト プログラムはグラフィカル環境を作成します。次に、異なる方向を指し、異なる色の線をいくつか作成します。 render メソッドは、それらをグラフィックス プレーン上に描画できます。最後に、このコードは画像を test.png として保存します。
この記事では、以下に示すように、コマンド ライン インタープリターを使用してこのコードを実行します。
リーリー
|
図 2 は、生成された test.png ファイルが Firefox でどのように表示されるかを示しています。
図2. 単純なグラフィックオブジェクトのテスト
もちろん、これはモナリザほど美しくはありませんが、現在の仕事のニーズを満たすことができます。
寸法を追加
最初の要件であるグラフィック オブジェクトを提供する機能が満たされたので、2 番目の要件である Z 値を使用して 1 つのオブジェクトを他のオブジェクトの上または下に配置する機能に進むことができます。
各 Z 値は元のイメージの面と考えることができます。要素は、Z 値の最小値から最大値の順に描画されます。たとえば、赤い円と黒いボックスという 2 つのグラフィック要素を描画してみましょう。円の Z 値は 100 ですが、黒いボックスの Z 値は 200 です。これにより、図 3 に示すように、円がボックスの後ろに配置されます:
図 3. 異なる Z 値を持つ表面
http://www.bkjia.com/PHPjc/508467.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/508467.html技術記事この記事では、PHP を使用してオブジェクト指向のグラフィックス レイヤーを構築する方法を説明します。オブジェクト指向システムを使用すると、標準の PHP ライブラリで提供される基本機能を使用するよりも複雑なグラフィックスを構築できます...