background image

 

使用 PHP 创建图形的巧妙方法

我将图形编辑程序分为两类:一类是绘图程序,利用这种程序可以一个像素一个像

素地绘制图像;另外一类是制图程序,这种程序提供了一组对象,例如线、椭圆和矩形,

 

您可以使用这些对象来组合成一幅大图像,例如 JPEG。绘图程序非常适合进行像素级的

控制。但是对于业务图形来说,制图程序是比较好的方式,因为大部分图形都是由矩形、

线和椭圆组成的。

PHP 内置的制图基本操作与绘图程序非常类似。它们对于绘制图像来说功能非常强

大;但是如果您希望自己的图像是一组对象集合时,这就不太适合了。本文将向您展示如

 

何在 PHP 

 

图形库的基础上构建一个面向对象的图形库。您将使用 PHP V5 中提供的面向

对象的扩展。

具有面向对象的图形支持之后,您的图形代码就非常容易理解和维护了。您可能还需

要从一种单一的图形源将图形合成为多种类型的媒介:Flash 电影、SVG 等等。

目标

 

创建一个图形对象库包括 3 个主要的目标:

从基本操作切换到对象上

它不使用 imageline、imagefilledrectangle 以及其他图形函数,这个库应该

提供一些对象,例如 Line、Rectangle 和 Oval,它们可以用来制作图像。它应该还可

以支持构建更大的复杂对象或对对象进行分组的功能。

 

可以进行 值排序

制图程序让画家可以在画面表面上上下移动图形对象。这个库应该可以支持将一个对

 

象放到其他对象前后的功能:它使用了一个 z 值,用来定义对象从制图平面开始的高度。

 

值越大的对象被画得越晚,也就出现在那些 z 值较小的对象之上。

 

提供 viewport 的转换

通常,数据的坐标空间与图像的坐标空间是不同的。PHP 中的图形基本操作是对图

 

像的坐标平面进行操作的。这个图形库应该支持 viewport 的规范,这样您就可以在一个

程序员熟悉的坐标系统中指定图形了,并且可以自动进行伸缩来适应任何图像的大小。

由于这里有很多特性,您将一步步地编写代码来展示这些代码如何不断增加功能。

基础知识