PHP 3D 円グラフ描画関数の次の実装原理は、 // 楕円の長半軸などのパラメータに基づいて 3D 円グラフを描画するコードです。
以下はPHPチュートリアルです。3D円グラフ描画機能の実装原理は、 // 楕円の長半軸などのパラメータに基づいて3D円グラフを描画するコードです。
クラスチャート{
var $a //楕円の長半軸
var $b; //楕円の短半軸
var $DataArray; //各セクターのデータ
var $ColorArray; //各セクターの色は、先頭に 0x を追加せずに 16 進数で記述する必要があります
//エッジと影は黒です関数チャート($pa=100,$pb=60,$sData="100,200,300,400,500,300", $sColor="ee00ff,dd0000,cccccc,ccff00,00ccff,ccff00")
{
$this->a=$pa
$this->b=$pb; $this->DataArray=split(",",$sData); $this->ColorArray=split(",",$sColor); }
関数 setA($v){
$this->a=$v; }関数 getA(){
$this->a を返します
}関数 setB($v){
関数getB(){
$this->b=$v; }
$this->b を返す
関数 setDataArray($v){
}
$this->DataArray=split(",",$v); }
$this->DataArray を返します
関数 getDataArray($v){}
$this->ColorArray=split(",",$v); }
関数 setColorArray($v){}
関数 getColorArray(){
$this->ColorArray を返します$image=imagecreate($this->a*2+40,$this->b*2+40); $PieCenterX=$this->a+10; $PieCenterY=$this->b+10; $DoubleA=$this->a*2; $DoubleB=$this->b*2; リスト($R,$G,$B)=getRGB(0); $colorBorder=imagecolorallocate($image,$R,$G,$B); $DataNumber=count($this->DataArray);
関数 DrawPie(){//$DataTotal
//背景を塗りつぶします
for($i=0;$iDataArray[$i]; //データの合計を計算します
Imagefill($image, 0, 0, imagecolorallocate($image, 0xFF, 0xFF, 0xFF));
/*
** 画每一个扇形
*/
$度 = 0;
for($i = 0; $i $StartDegrees =round($Degrees);
$Degrees += (($this->DataArray[$i]/$DataTotal)*360);
$EndDegrees = ラウンド($Degrees);
$percent =number_format($this->DataArray[$i]/$DataTotal*100, 1);
list($R,$G,$B)=getRGB(hexdec($this->ColorArray[$i]));
$CurrentColor=imagecolorallocate($image,$R,$G,$B);
if ($R>60 かつ $R if ($G>60 かつ $G if ($B>60 かつ $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);
imagestring($image,2,floor($PieCenterX + $ArcX-5),floor($PieCenterY + $ArcY-5),$percent."%",$colorBorder);//画阴影
if ($StartDegrees>=0 および $StartDegrees<=180){
if($EndDegrees<=180){
for($k = 1; $k imagearc($image,$PieCenterX, $PieCenterY+$k,$DoubleA, $DoubleB, $StartDegrees, $EndDegrees, $CurrentDarkColor);
}その他{
for($k = 1; $k imagearc($image,$PieCenterX, $PieCenterY+$k,$DoubleA, $DoubleB, $StartDegrees, 180, $CurrentDarkColor);
}}
}
/*此処此稿已经生了一幅图像了
** 必要なのは、これをブラウザに送信することですが、重要なのは、このテキストが GIF ファイルであることを認識できるようにすることです。 */
//生成された画像を出力
header("コンテンツタイプ: image/gif");
imagegif($image);
imagedestroy($image);
}//drawPie() を終了します
}//授業終了
//实现
$objp = 新しいチャート();
$objp->DrawPie();