伪3D绘图类
create(func_get_arc(0),func_get_arc(1));
}
/**
* 在($x,$y)处画点
*/
function pixel($x,$y) {
$p = $this->get_view($x,$y);
imagesetpixel($this->im,$p[x],$p[y],$this->color);
$this->xo = $p[x];
$this->yo = $p[y];
}
/**
* 移动到($x,$y)处
*/
function moveto($x,$y) {
$p = $this->get_view($x,$y);
$this->xo = $p[x];
$this->yo = $p[y];
}
/**
* 从($x1,$y1)到($x2,$y2)处画线
*/
function line($x1,$y1,$x2,$y2) {
$p1 = $this->get_view($x1,$y1);
$p2 = $this->get_view($x2,$y2);
imageline($this->im,$p1[x],$p1[y],$p2[x],$p2[y],$this->color);
}
/**
* 从当前位置到($x,$y)处画线
*/
function lineto($x,$y) {
$p = $this->get_view($x,$y);
imageline($this->im, $this->xo, $this->yo, $p[x], $p[y], $this->color);
$this->xo = $p[x];
$this->yo = $p[y];
}
/**
* 设置当前颜色
*/
function color($clr) {
$r = ($clr>>16) & 0xff;
$g = ($clr>>8) & 0xff;
$b = ($clr) & 0xff;
$this->color = ImageColorAllocate($this->im, $r,$g,$b);
$this->fillcolor = ImageColorAllocate($this->im, $r,$g,$b);
$this->filldarkcolor = ImageColorAllocate($this->im, $r/2,$g/2,$b/2);
return $this->color;
}
/**
* 设置当前充填颜色
*/
function fillcolor($clr) {
$r = ($clr>>16) & 0xff;
$g = ($clr>>8) & 0xff;
$b = ($clr) & 0xff;
$this->fillcolor = ImageColorAllocate($this->im, $r,$g,$b);
return $this->fillcolor;
}
/**
* 创建GD句柄并设置坐标系
*/
function create($x,$y) {
$this->im = imagecreate($x,$y);
$this->viewx = $x-1;
$this->viewy = -($y-1);
$this->winx = $x;
$this->winy = $y;
$this->orgx = 0;
$this->orgy = 0;//$y;
$this->colors = $this->color(0xffffff);
settype($this->ksin,"double");
settype($this->kcos,"double");
$this->ksin = sin(deg2rad(0));
$this->kcos = cos(deg2rad(0));
}
/**
* 坐标映射
*/
function get_view($x,$y) {
$this->xo = $x*$this->kcos - $y*$this->ksin;
$this->yo = $x*$this->ksin + $y*$this->kcos;
$p[x] = ($this->xo + $this->orgx)*($this->viewx/$this->winx);
$p[y] = ($this->yo + $this->orgy)*($this->viewy/$this->winy)-$this->viewy;
return $p;
}
/**
* 设置限度
*/
function set_ext($x,$y=0) {
$this->winx = $x;
if($y == 0) {
$this->winy = - $x * $this->viewy / $this->viewx;
}else {
$this->winy = $y;
}
}
/**
* 设置旋转角
*/
function set_r($p) {
$this->ksin = sin(deg2rad($p));
$this->kcos = cos(deg2rad($p));
}
/**
* 构造图形,必需在派生类中重载本方法
*/
function paint() {
/**
* 必需由派生类重载
* 必需包含语句 $this->create(宽度,高度);
*/
die("paint 方法必需由派生类重载!");
}
/**
* 输出图形
*/
function run() {
$this->paint();
$func = "Image".$this->type;
if(! function_exists($func)) {
$this->type = "png";
$func = "Image".$this->type;
}
Header("Content-type: image/{$this->type}");
$func($this->im);
imageDestroy($this->im);
}
/**
* 圆类图形数据生成,参数$p为坐标旋转角
*/
function get_point($ox,$oy,$w,$h,$start,$end) {
$a = $w/2;
$b = $h/2;
$rs = array();
$i = $start;
for($i=$start;$i<=$end;$i+=5) {
$n = deg2rad($i);
$x = $a*cos($n);
$y = $b*sin($n);
$p = $this->get_view($ox+$x,$oy+$y);
$rs[] = $p[x];
$rs[] = $p[y];
if($i == $end) break;
if($i+5 > $end) $i = $end - 5;
}
$p = $this->get_view($ox,$oy);
$rs[] = $p[x];
$rs[] = $p[y];
$rs[] = $rs[0];
$rs[] = $rs[1];
return $rs;
}
/**
* 弓形
*/
function chord($left,$top,$w,$h,$start,$end,$z=0) {
$ar = $this->get_point($left,$top,$w,$h,$start,$end,$p);
for($i=0;$i
```
get_view($ar[$i],$ar[$i+1]);
$ar[
\---------------------------------------------------------------
具体是什么错?
\---------------------------------------------------------------
up
\---------------------------------------------------------------
我不懂PHP﹐不過想接分
\---------------------------------------------------------------
好东东,先试一试看看。
\---------------------------------------------------------------
PHP是个有意思的东西,希望她一路走好
\---------------------------------------------------------------
我的居然提示:
PHP Fatal error: Call to undefined function: imagecreate() in E:\jysweb\office\test\class.php on line 89
要配置......
\---------------------------------------------------------------
这么长的代码,找错真是难啊:)恭喜楼主
\---------------------------------------------------------------
php.ini
extension=php_gd.dll
\---------------------------------------------------------------
这段代码我测试过了,本身没有什么错误!
图像是一个立体饼状图,切成了3块,还有一个十字架,左下角还有一个小桶
p.s.我的gd不支持gif,所以我用了png图
\---------------------------------------------------------------
不过这个类确实写得很精致,堪称经典代码!
\---------------------------------------------------------------
up
\---------------------------------------------------------------
up
\---------------------------------------------------------------
up
\---------------------------------------------------------------
up
\---------------------------------------------------------------
呵呵,每次来都可以看见楼主的身影,恭喜!
\---------------------------------------------------------------
呵呵,我一运行,没晕死,出了不到10000行错误。
Notice: Use of undefined constant x - assumed 'x' in /home/yjj/public_html/temp/test/index.php on line 109
Notice: Use of undefined constant y - assumed 'y' in /home/yjj/public_html/temp/test/index.php on line 110
Notice: Use of undefined constant x - assumed 'x' in /home/yjj/public_html/temp/test/index.php on line 109
Notice: Use of undefined constant y - assumed 'y' in /home/yjj/public_html/temp/test/index.php on line 110
Notice: Use of undefined constant x - assumed 'x' in /home/yjj/public_html/temp/test/index.php on line 169
Notice: Use of undefined constant y - assumed 'y' in /home/yjj/public_html/temp/test/index.php on line 170
全是这个.
\---------------------------------------------------------------
楼主很热心,恭喜~
\---------------------------------------------------------------
可能是里面的计算,精度不够。
直接整除了
\---------------------------------------------------------------
呵呵,我一运行,没晕死,出了不到10000行错误。
Notice: Use of undefined constant x - assumed 'x' in /home/yjj/public_html/temp/test/index.php on line 109
Notice: Use of undefined constant y - assumed 'y' in /home/yjj/public_html/temp/test/index.php on line 110
Notice: Use of undefined constant x - assumed 'x' in /home/yjj/public_html/temp/test/index.php on line 109
Notice: Use of undefined constant y - assumed 'y' in /home/yjj/public_html/temp/test/index.php on line 110
Notice: Use of undefined constant x - assumed 'x' in /home/yjj/public_html/temp/test/index.php on line 169
Notice: Use of undefined constant y - assumed 'y' in /home/yjj/public_html/temp/test/index.php on line 170
全是这个.
\---------------------------------------------------------------
Congratulation!
I want to try,but i can't understand the above-mentioned code.
\---------------------------------------------------------------
太长了,头晕。
\---------------------------------------------------------------
呵呵
\---------------------------------------------------------------
不会。
\---------------------------------------------------------------
碰到高人了,快帮我,
用gd画好的图用
header("Content-type:image/png");
imag
```Published At