3D 円グラフを実装するための PHP オブジェクト プログラミング

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

プログラミング | 円グラフオブジェクト


//パブリック関数

//角度をラジアンに変換
function deg2Arc($degrees) {
return($degrees * (pi()/180.0))
}

//RGB
function getRGB($color){
$R=($color>>16) & 0xff;
$G=($color>>8) & 0xff;
$B=($color) & 0xff; array($R,$G,$B));
}

// 楕円の中心を (0, 0) とする楕円上の x、y 点の値を取得します
function pie_point($deg,$ va,$ vb){
$x= cos(deg2Arc($deg)) * $va;
$y= sin(deg2Arc($deg)) * $vb; ;
}


//3D円グラフクラス

class Pie3d{

var $a; //楕円副軸
var $DataArray;各セクターごとに
var $ColorArray; //各セクターの色の要件は 16 進数で記述されますが、先頭に 0x を追加しないでください
//エッジと影は黒です

function Pie3d($pa=100,$pb=60) ,$sData= "100,200,300,400,500", $sColor="ee00ff,dd0000,cccccc,ccff00,00ccff")
{
$this->a=$pa;
$this; ->DataArray =split(",",$sData);
$this->ColorArray=split(",",$sColor);
}

function setA($v){
$this-> a=$v ;
}

function getA(){
return $this->a;
}

function setB($v){
$this->b=$v;

function getB(){
return $this->b;

function setDataArray($v){
$this->DataArray=split(",",$v)
}

function getDataArray($) v){
$this->DataArray を返す
}

function setColorArray($v){
$this->ColorArray=split(",",$v)
}

function getColorArray(){
$this ->ColorArray を返す
}


function DrawPie(){
$image=imagecreate($this->a*2+40,$this->b*2+40);
$ PieCenterX=$this->a+10;
$PieCenterY=$this->b+10;
$DoubleB=$this->b*2;
list($ R,$G,$B)=getRGB(0);
$colorBorder=imagecolorallocate($image,$R,$G,$B);
$DataNumber=count($this->DataArray) ;

/ /$DataTotal
for($i=0;$i
//背景
imagefill($ image, 0, 0, imagecolorallocate($image, 0xFF, 0xFF, 0xFF));

/*
** 各セクターを描画
*/
$Degrees = 0 for($i = 0; ; $i < ; $DataNumber; $i++){
$StartDegrees = Round($Degrees)
$Degrees += (($this->DataArray[$i]/$DataTotal)*360); = ラウンド($ 度);
$percent =number_format($this->DataArray[$i]/$DataTotal*100, 1);
list($R,$G,$B)=getRGB($ this-> ColorArray[$i]));
$CurrentColor=imagecolorallocate($image,$R,$G,$B);
if ($R>60 and $R if ($G>60 and $G if ($B>60 and $B $CurrentDarkColor=imagecolorallocate( $image,$ R,$G,$B);
//扇形の円弧を描画します
imagearc($image,$PieCenterX,$PieCenterY,$DoubleA,$DoubleB,$StartDegrees,$EndDegrees,$CurrentColor);
//直線を描画します
list ($ArcX, $ArcY) = pie_point($StartDegrees , $this->a , $this->b)
imageline($image,$PieCenterX,$PieCenterY,floor); ($PieCenterX + $ArcX),floor ($PieCenterY + $ArcY),$CurrentColor);
//直線を描画します
list($ArcX, $ArcY) = pie_point($EndDegrees,$this->a , $this->b);
imageline( $image,$PieCenterX,$PieCenterY,ceil($PieCenterX + $ArcX),ceil($PieCenterY + $ArcY),$CurrentColor);
// セクターを塗りつぶします
$ MidPoint =round((($EndDegrees - $StartDegrees) /2) + $StartDegrees);
list($ArcX, $ArcY) = Pie_point($MidPoint, $this->a*3/4, $this-> ;b*3/4);

imagefilltoborder( $image,floor($PieCenterX + $ArcX),floor($PieCenterY + $ArcY), $CurrentColor,$CurrentColor); $PieCenterX + $ArcX-5),floor($ PieCenterY + $ArcY-5),$percent."%",$colorBorder);

// 影を描画します
if ($StartDegrees>=0 and $StartDegrees<=) 180){
if($EndDegrees for($k = 1; $k imagearc($image,$PieCenterX, $PieCenterY+$k,$DoubleA, $DoubleB, $StartDegrees, $EndDegrees, $CurrentDarkColor);
} else{
for($k = 1; $k imagearc($image,$PieCenterX, $PieCenterY+$k,$DoubleA, $DoubleB, $StartDegrees, 180, $CurrentDarkColor);
}

}
}

/*この時点で、スクリプトは画像を生成しました
* *ここで必要なのは、ヘッダーをブラウザに送信して、それが GIF ファイルであることをブラウザに認識させることです。そうしないと、奇妙な文字化けが大量に表示されるだけです
*/
// 生成された画像を出力します
header("Content-type: image/gif")
imagedestroy($image);
}//drawPie() を終了
}//クラスを終了

$objp = new Pie3d();


;



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