Heim  >  Artikel  >  php教程  >  画出一个简单的流程图

画出一个简单的流程图

PHP中文网
PHP中文网Original
2016-05-25 17:10:281204Durchsuche

画出一个简单的流程图

<?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)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn