仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2134|回复: 20
打印 上一主题 下一主题

[学习教程] PHP教程之利用 PHP 5.0创立图形的奇妙办法

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:14:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,你才会记忆深刻,而一味的啃书,绝对是不行的,我想大部分新手之所以觉得概念难学,大部分是一个字“懒”,懒是阻止进步的最大敌人,所以克服掉懒的习惯,才能更快的学好一样东西。创立|图形       本文将展现若何利用 PHP 构建面向对象的图形层。利用面向对象的体系可以用来构建庞杂的图形,这比利用尺度 PHP 库中所供应的根基功效来构建图形复杂良多。

  我将图形编纂法式分为两类:一类是画图法式,使用这类法式可以一个像素一个像素地绘制图象;别的一类是制图法式,这类法式供应了一组对象,例如线、椭圆和矩形,您可使用这些对象来组分解一幅大图象,例如 JPEG。画图法式十分合适停止像素级的掌握。然而关于营业图形来讲,制图法式是对照好的体例,由于大局部图形都是由矩形、线和椭圆构成的。

  PHP 内置的制图根基操作与画图法式十分相似。它们关于绘制图象来讲功效十分壮大;然而假如您但愿本人的图象是一组对象纠合时,这就不太合适了。本文将向您展现若何在 PHP 图形库的基本上构建一个面向对象的图形库。您将利用 PHP V5 中供应的面向对象的扩大。

  具有面向对象的图形撑持以后,您的图形代码就十分轻易了解和保护了。您能够还需求从一种单一的图形源将图形分解为多品种型的前言:Flash 片子、SVG 等等。

  方针

  创立一个图形对象库包含 3 个次要的方针:

  从根基操作切换到对象上

  它不利用 imageline、imagefilledrectangle 和其他图形函数,这个库应当供应一些对象,例如 Line、Rectangle 和 Oval,它们可以用来制造图象。它应当还可以撑持构建更大的庞杂对象或对对象停止分组的功效。

  可以停止 z 值排序

  制图法式让画家可以在画面外表上高低挪动图形对象。这个库应当可以撑持将一个对象放到其他对象前后的功效:它利用了一个 z 值,用来界说对象从制图立体入手下手的高度。z 值越大的对象被画得越晚,也就呈现在那些 z 值较小的对象之上。

  供应 viewport 的转换

  凡是,数据的坐标空间与图象的坐标空间是分歧的。PHP 中的图形根基操作是对图象的坐标立体停止操作的。这个图形库应当撑持 viewport 的标准,如许您就能够在一个法式员熟习的坐标体系中指定图形了,而且可以主动停止伸缩来顺应任何图象的巨细。

  因为这里有良多特征,您将一步步地编写代码来展现这些代码若何不休增添功效。

  基本常识

  让咱们起首来看一个图形情况对象和一个名为 GraphicsObject 的接口,它是利用一个 Line 类完成的,功效就是用来画线。UML 如图 1 所示。

图 1. 图形情况和图形对象接口





  GraphicsEnvironment 类中保留了图形对象和一组色彩,还包含宽度和高度。saveAsPng 办法担任将以后的图象输入到指定的文件中。

  GraphicsObject 是任何图形对象都必需利用的接口。要入手下手利用这个接口,您所需求做的就是利用 render 办法来画这个对象。它是由一个 Line 类完成的,它使用 4 个坐标:入手下手和停止的 x 值,入手下手和停止的 y 值。它还有一个色彩。当挪用 render 时,这个对象从 sx,sy 到 ex,ey 画一条由名字指定的色彩的线。

  这个库的代码如清单 1 所示。

  清单 1. 根基的图形库
  1. <?php class GraphicsEnvironment { public $width; public $height; public $gdo; public $colors = array(); public function __construct( $width, $height ) { $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 saveAsPng( $filename ) { imagepng( $this->gdo, $filename ); } } abstract class GraphicsObject { abstract public function render( $ge ); } class Line extends GraphicsObject { private $color; private $sx; private $sy; private $ex; private $ey; public function __construct( $color, $sx, $sy, $ex, $ey ) { $this->color = $color; $this->sx = $sx; $this->sy = $sy; $this->ex = $ex; $this->ey = $ey; } public function render( $ge ) { imageline( $ge->getGraphicObject(), $this->sx, $this->sy, $this->ex, $this->ey, $ge->getColor( $this->color ) ); } } ?>
复制代码
  测试代码如清单 2 所示:


[1] [2] [3] [4] [5] 下一页  

  基础这个东西,有人问学php需要任何基础不?
小女巫 该用户已被删除
沙发
发表于 2015-2-4 10:05:46 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
admin 该用户已被删除
板凳
发表于 2015-2-4 15:11:42 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
分手快乐 该用户已被删除
地板
发表于 2015-2-4 21:53:19 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
乐观 该用户已被删除
5#
发表于 2015-2-5 17:56:39 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-5 20:22:33 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
只想知道 该用户已被删除
7#
发表于 2015-2-6 08:09:51 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
第二个灵魂 该用户已被删除
8#
发表于 2015-2-10 05:45:48 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
老尸 该用户已被删除
9#
发表于 2015-2-13 18:50:15 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
愤怒的大鸟 该用户已被删除
10#
发表于 2015-3-4 01:01:18 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
海妖 该用户已被删除
11#
发表于 2015-3-11 14:16:56 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
山那边是海 该用户已被删除
12#
发表于 2015-3-13 03:41:57 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
不帅 该用户已被删除
13#
发表于 2015-3-20 11:30:15 | 只看该作者
做为1门年轻的语言,php一直很努力。
变相怪杰 该用户已被删除
14#
发表于 2015-3-22 03:06:55 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
透明 该用户已被删除
15#
发表于 2015-3-25 23:55:11 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
精灵巫婆 该用户已被删除
16#
发表于 2015-3-30 15:39:34 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
蒙在股里 该用户已被删除
17#
发表于 2015-4-4 21:22:44 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
小妖女 该用户已被删除
18#
发表于 2015-4-15 14:00:13 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
简单生活 该用户已被删除
19#
 楼主| 发表于 2015-4-16 12:10:52 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
若相依 该用户已被删除
20#
发表于 2015-4-23 04:23:17 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-29 20:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表