ホームページ > php教程 > php手册 > PHP描画オブジェクト構造の設計と応用例

PHP描画オブジェクト構造の設計と応用例

WBOY
リリース: 2016-06-21 09:13:55
オリジナル
973 人が閲覧しました

オブジェクト|デザイン|アプリケーション例

この記事では主にPHPで描画オブジェクトの構造設計を実装する方法について説明します。

PHP では、小さなデータ構造を単純なクラスによって実装できます。つまり、単純なデータと操作によって定義できます。ただし、データ構造が複雑になると、単純なクラスではデータ構造全体を完全に反映することができなくなります。そのため、クラスのメンバーを一言で表すためには、クラスの構造を使用する必要があります。クラス。これは、データのカプセル化、情報の隠蔽、コードの再利用を実現するためのオブジェクト指向設計手法の拡張であり、もう 1 つの方法はクラス継承です。
この記事では主にクラスの構造について説明します。

描画を例として、幾何学図形の簡単な例を見てみましょう。
幾何学図形には一連の点、線、面などが含まれており、いくつかの幾何公理によれば、点が最も基本的な要素であることがわかります。したがって、線や面のオブジェクトを表現するためのデザインの基本オブジェクトとして点を使用します。クラス構造がどのように実装されるかを示すために使用されます。

分析
点が特定の平面上にあると仮定します。座標系を決定した後 (つまり、原点、座標軸、およびその正の方向が与えられた後)、以下に示すように、座標位置を使用して点を説明できます。図形:

直線 2点で決まるので、始点と終点で線分が決まります。図に示すように:

表面 - (例) 2 つの平行な対向する辺で構成され、隣接する 2 つの辺間の角度は 90 度の長方形。絵を描いているときに、長方形は対角の 2 点によって一意に決定できることを発見しました。写真に示すように:

上記の分析に基づいて、点タイプ、線タイプ、面タイプの設計を開始しました。ライン クラスとエリア クラスのデータ メンバーには、クラスの構造であるポイント クラスが含まれているため、単純なクラスから複雑なクラスが形成されます。
デザインは次のとおりです:

別の観点から見ると、クラス構造の設計方法が採用されていない場合、階層のないクラスは次のようになります。 Line を例に挙げます。

単純なクラス、アイデアは次のとおりです。変数は、この線分の 2 点の座標 (x1, y1)、(x2, y2) の決定を表します。

2 つのデザインを比較すると、Line_Bad には階層がないため、メンテナンスや変更に不便があります。まず、維持する必要があるメンバー変数は 4 つあり、直線を 3 つに変更する必要がある場合は、Line_Bad にメンバー関数を追加する必要があります。 -次元空間では、Line_Bad はメンバー変数を追加し、すべてのメンバー関数を変更する必要があります。 Line クラスを使用すると、そのような問題を回避できます。色を設定するには Point メソッドを呼び出すだけで済みます。3 次元空間に変更するには、Point 属性 (Z 座標) を追加するだけで済みます。 Line クラス自体は (PHP の描画機能に関連する) ほとんど変更を必要としないため、メンテナンスと変更にかかる労力が大幅に節約されます :)。



描画の基本を理解したので、実際の応用例を示しましょう。

多くの統計では、さまざまな統計結果を表示するために凡例が必要になることがよくあります。ヒストグラムの表示を実現するために、上記で設計された描画クラスを使用します。

分析:
ヒストグラムは主に座標軸と円柱で構成されます。座標軸は Line クラスで表示でき、円柱は Rectangle クラスで表示できます。

座標軸は次のように表示されます:


function DrawAxes()
{
$vertspan=200;

$p1=new Point(10,$vertspan+2.5);
$p2=new Point(10, 2.5);

$VerticalAxis=新しいライン($p1,$p2);
$VerticalAxis->Draw();

$p1=新しい点(7.5,$vertspan);
$p2=新しい点(370) ,$vertspan ;
$vertspan=200;
//表示比率
$scaleHeight=190;
//列の最大値を決定します
$maxTotal=Max1(&$arr_barTotal);
//列の数を決定します
$total=count( $arr_barTotal);

//列を表示するループ
$dx=15;
$x=10+$dx;

for($i=0;$i<$total;$ i++)
{
$rectHeight =($arr_barTotal[$i]/$maxTotal)*$scaleHeight;

$p1=新しいポイント($x,$vertspan-$rectHeight);
$p2=新しいポイント($x+ $dx,$vertspan);

$CurrRect= new Rectangle($p1,$p2);
$CurrRect->Draw();

$x+=2.0*$dx;
}
}


メインプログラム:
1) 表示データを確認します。
2) 座標軸を表示します。
3) 列を表示します。


//main
$arr_barTotal=array('1','3','34','23','5','25','7') //データを表示
DrawAxes(); //座標軸を描画します
Plot($arr_barTotal); //円柱状の本体を描画します


このようにして、メインプログラムのフレームワークが完成します: D
効果は次のとおりです。

さらに美化作業が必要な場合は、基本表示クラスに対応する属性と対応するメンバー関数を自分で追加できますが、ここでは詳しく説明しません。

添付資料: スペースの問題により、ソースコードは添付されません。
この記事のすべてのコードは http://10.31.172.7/cgi-bin/cvsweb.cgi/kai​​/graph/ で入手でき、php4.0.2+Gd1.62 環境でデバッグされています。








関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート