使用 PHP 5.0创建图形的巧妙方法(3)

时间:2010-01-13 08:36:11   来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:可以将每个 z 值当作是原始图像的一个面。所画的元素是按照 z 值从最小到最大的顺序来画的。例如,让我们画两个图形元素:一个红色的圆和一个黑色的方框。圆的 z 值是 100,而黑方框的 z 值是 200。这样会将圆放到方框之后,如图 3 所示:      我们只需要修改一下 z 值就可以将这个红圆放...
  正文:

添加维数
  
    我们的第一个需求 —— 提供图形对象的能力 —— 已经满足了,现在应该开始满足第二个需求了:可以使用一个 z 值将一个对象放到其他对象的上面或下面。
  
    我们可以将每个 z 值当作是原始图像的一个面。所画的元素是按照 z 值从最小到最大的顺序来画的。例如,让我们画两个图形元素:一个红色的圆和一个黑色的方框。圆的 z 值是 100,而黑方框的 z 值是 200。这样会将圆放到方框之后,如图 3 所示:
  
  我们只需要修改一下 z 值就可以将这个红圆放到黑方框之上。要实现这种功能,我们需要让每个 GraphicsObject 都具有一个 z() 方法,它返回一个数字,就是 z 值。由于您需要创建不同的图形对象(Line、Oval 和 Rectangle),您还需要创建一个基础的类 BoxObject,其他 3 个类都使用它来维护起点和终点的坐标、z 值和这个对象的颜色(请参看图 4)。
  %20  这个图形库的新代码如清单%203%20所示:%20  %20    清单%203.%20可以处理%20z%20信息的图形库%20  %20  %20  <?PHP%20  class%20GraphicsEnvironment%20  {%20  %20public%20$width;%20  %20public%20$height;%20  %20public%20$gdo;%20  %20public%20$colors%20=%20array();%20  %20  %20public%20function%20__construct(%20$width,%20$height%20)%20  %20{%20  %20$this->width%20=%20$width;%20  %20$this->height%20=%20$height;%20  %20$this->gdo%20=%20imagecreatetruecolor(%20$width,%20$height%20);%20  %20$this->addColor(%20"white",%20255,%20255,%20255%20);%20  %20imagefilledrectangle(%20$this->gdo,%200,%200,%20  %20$width,%20$height,%20  %20$this->getColor(%20"white"%20)%20);%20  %20}%20  %20  %20public%20function%20width()%20{%20return%20$this->width;%20}%20  %20  %20public%20function%20height()%20{%20return%20$this->height;%20}%20  %20  %20public%20function%20addColor(%20$name,%20$r,%20$g,%20$b%20)%20  %20{%20  %20$this->colors[%20$name%20]%20=%20imagecolorallocate(%20  %20$this->gdo,%20  %20$r,%20$g,%20$b%20);%20  %20}%20  %20  %20public%20function%20getGraphicObject()%20  %20{%20  %20return%20$this->gdo;%20  %20}%20  %20  %20public%20function%20getColor(%20$name%20)%20  %20{%20  %20return%20$this->colors[%20$name%20];%20  %20}%20  %20  %20public%20function%20saveASP/ target=_blank class=infotextkey>aspng( $filename )
   {
   imagepng( $this->gdo, $filename );
   }
  }
  
  abstract class GraphicsObject
  {
   abstract public function render( $ge );
   abstract public function z();
  }
  
  abstract class BoxObject extends GraphicsObject
  {
   protected $color;
   protected $sx;
   protected $sy;
   protected $ex;
   protected $ey;
   protected $z;
  
   public function __construct( $z, $color, $sx, $sy, $ex, $ey )
   {
   $this->z = $z;
   $this->color = $color;
   $this->sx = $sx;
来源:http://www.002pc.com/master/College/Programming/PHP/11807.html

收藏到:

关于《使用 PHP 5.0创建图形的巧妙方法(3)》文章的评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

随机文章

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by rand() limit 10

顶出来的热门

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by diggtop desc,id desc limit 10
站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td