ホームページ >php教程 >PHP源码 >画出一个简单的流程图

画出一个简单的流程图

PHP中文网
PHP中文网オリジナル
2016-05-25 17:10:281222ブラウズ

画出一个简单的流程图

<?php
$shuZhu=array(array("经理1","经理2"),array("主管1","主管2","经理3"),array("组长","老大"));
$fontPosition=&#39;simhei.ttf&#39;;

class process
{
	var $arr;//流程确定的数组
	var $promoters;//流程发起人
	var $black;//所画节点颜色
	var $imgWidth;//图片宽度
	var $imgHeight;//图片长度
	var $font;//字体存放位置
	var $fontSize;
	function __construct($shuZhu,$fontP,$width=400,$height=300,$fontSize=10,$promoters="")
	{
		$this->arr=$shuZhu;
		$this->promoters=$promoters;
		$this->font = $fontP;
		$this->imgWidth=$width;
		$this->imgHeight=$height;
		$this->fontSize=$fontSize;
	}
	//point(x1,x2)是画图的起始点,w是横线的长,h是竖线的长,r是节点圆点的半径
	function show( $x,$y,$w,$h,$r)
	{
		//创建画布
		$image=imagecreatetruecolor($this->imgWidth,$this->imgHeight);
		//设置图像中所需的颜色
		$gray=imagecolorallocate($image,0xc0,0xC0,0xC0);
		$red=imagecolorallocate($image,0xFF,0x00,0x00);
		$black=imagecolorallocate($image,0x00,0x00,0x00);
		imagefill($image,0,0,$gray);
		
		
		imageline($image,$x,$y,$x+$w,$y,$red);//画第一条横线线
		imagefilledellipse($image, $x,$y, $r,$r, $black);//画出发起人的节点
		imagettftext($image,$this->fontSize, 0, $x-$w/4,$y+$w/2, $black, $this->font,$this->promoters);
		
		for($i=0;$i<count($this->arr);$i++)
		{
			$num=count($this->arr[$i]);//该级接点上有多少人
			if($num>1)//节点上的人数多于一人,则先画一条竖线
			{
				imageline($image,$x+$w*($i+1),$y-$h/2,$x+$w*($i+1),$y+$h/2,$red);	
			}
			for($j=0;$j<count($this->arr[$i]);$j++)
			{
				if($num>1)
				{
					$m=$h/($num-1);//一个节点上有count[$arr[i]]个人,则$m代表截取竖线的长度
					imageline($image,$x+$w*($i+1),$y-$h/2+$m*$j,$x+$w*($i+2),$y,$red);
					imagefilledellipse($image, $x+$w*($i+1),$y-$h/2+$m*$j, $r,$r, $black);
					//imagestring($image,2,$x+$w*($i+1)-10,$y-$h/2+$m*$j+5,$this->arr[$i][$j],$black);//直接输出接点上的人员名称
					imagettftext($image, $this->fontSize, 0, $x+$w*($i+1)-$w/4,$y-$h/2+$m*$j+$w/2, $black, $this->font, $this->arr[$i][$j]);
				}
				else
				{
					imageline($image,$x+$w*($i+1),$y,$x+$w*($i+2),$y,$red);//画一条横线
					imagefilledellipse($image, $x+$w*($i+1),$y, $r,$r, $black);
					//imagestring($image,2,$x+$w*($i+1),$y,$this->arr[$i][0],$black);//直接输出接点上的人员名称
					imagettftext($image,$this->fontSize, 0, $x+$w*($i+1)-$w/4,$y+$w/2, $black, $this->font,$this->arr[$i][0]);
				}
			}
			
		}

		header(&#39;Content-type:image/png&#39;);
		imagepng($image);
		imagedestroy($image);
	}
}
$img=new process($shuZhu,$fontPosition,600,300,10,"董事长");
$img->show(10,150,50,200,8);
?>

                   

 以上就是画出一个简单的流程图的内容,更多相关内容请关注PHP中文网(www.php.cn)!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。