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

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

  第二电脑网导读:>     清单 9 显示了更新后的 GraphicsEnvironment 代码。        清单 9. 更新后的 GraphicsEnvironment 代码         class GraphicsEnvironment   {    public $vsx;    public $vsy;    public $vex...
  正文:

 图 8 显示了更新后的 GraphicsEnvironment 类,它具有几个成员变量,用来存储 viewport 的起点和终点坐标:vsx,vsy 和 vex,vey。图形对象并不需要进行修改。
  
  
  清单 9 显示了更新后的 GraphicsEnvironment 代码
  
    清单 9. 更新后的 GraphicsEnvironment 代码
  
  
  class GraphicsEnvironment
  {
   public $vsx;
   public $vsy;
   public $vex;
   public $vey;
   public $width;
   public $height;
   public $gdo;
   public $colors = array();
  
   public function __construct( $width, $height,
   $vsx, $vsy, $vex, $vey )
   {
   $this->vsx = $vsx;
   $this->vsy = $vsy;
   $this->vex = $vex;
   $this->vey = $vey;
   $this->width = $width;
   $this->height = $height;
   $this->gdo = imagecreatetruecolor( $width, $height );
   $this->addColor( "white", 255, 255, 255 );
   imagefilledrectangle( $this->gdo, 0, 0,
   $width, $height,
   $this->getColor( "white" ) );
   }
  
   public function width() { return $this->width; }
  
   public function height() { return $this->height; }
  
   public function addColor( $name, $r, $g, $b )
   {
   $this->colors[ $name ] = imagecolorallocate(
   $this->gdo,
   $r, $g, $b );
   }
  
   public function getGraphicObject()
   {
   return $this->gdo;
   }
  
   public function getColor( $name )
   {
   return $this->colors[ $name ];
   }
  
   public function saveASP/ target=_blank class=infotextkey>aspng( $filename )
   {
   imagepng( $this->gdo, $filename );
   }
  
   public function tx( $x )
   {
   $r = $this->width / ( $this->vex - $this->vsx );
   return ( $x - $this->vsx ) * $r;
   }
  
   public function ty( $y )
   {
   $r = $this->height / ( $this->vey - $this->vsy );
   return ( $y - $this->vsy ) * $r;
   }
  }
  
  
  
    现在这个构造函数可以利用另外 4 个参数了,它们分别是 viewport 的起点和终点。 tx 和 ty 函数使用新的 viewport 坐标,并将 viewport 坐标转换成物理坐标。
  
    测试代码如清单 10 所示。
  
    清单 10. viewport 测试代码
  
  
  <?PHP
  require_once( "glib.php" );
  
  $ge = new GraphicsEnvironment( 400, 400,
   -1000, -1000, 1000, 1000 );
  
  $ge->addColor( "black", 0, 0, 0 );
  $ge->addColor( "red", 255, 0, 0 );
  $ge->addColor( "green", 0, 255, 0 );
  $ge->addColor( "blue", 0, 0, 255 );
  
  $g1 = new Group( 0 );
  $g1->add( new Oval( 200, "red", -800, -800, 0, 0 ) );
  $g1->add( new Rectangle( 100, "black", -400, -400, 900, 900 ) );
来源:http://www.002pc.com/master/College/Programming/PHP/11805.html

收藏到:

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

共有 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