【发布时间】:2010-09-14 18:09:33
【问题描述】:
我知道如何在 PHP(使用 GD)中绘制矩形,但是我们如何使它们具有交互性呢?我的意思是,有没有办法在用户点击的时间和地点得到通知?
最后,我希望用户能够通过单击在一组矩形中选择一个矩形,然后单击其他任何位置来移动它。
先谢谢了。
问候,
神秘先生。
【问题讨论】:
标签: php web-applications image-processing gd
我知道如何在 PHP(使用 GD)中绘制矩形,但是我们如何使它们具有交互性呢?我的意思是,有没有办法在用户点击的时间和地点得到通知?
最后,我希望用户能够通过单击在一组矩形中选择一个矩形,然后单击其他任何位置来移动它。
先谢谢了。
问候,
神秘先生。
【问题讨论】:
标签: php web-applications image-processing gd
GD 中的矩形是如下图所示的图像:
// Create a 55x30 image
$im = imagecreatetruecolor(55, 30);
$white = imagecolorallocate($im, 255, 255, 255);
// Draw a white rectangle
imagefilledrectangle($im, 4, 4, 50, 25, $white);
// Save the image
imagepng($im, 'imagefilledrectangle.png');
imagedestroy($im);
要使其具有交互性,您可以使用 CSS,例如将图像作为锚标记的背景:
<a href="#" id="myRectangle"></a>
然后在 CSS 中(假设 2 张图片):
a#myRectangle{
background-image: url(imagefilledrectangle1.png);
}
a#myRectangle:hover{
background-image: url(imagefilledrectangle2.png);
}
您可以使用 CSS 做更多事情或查看 http://jquery.com/ 以使用 JavaScript
【讨论】:
您可以使用image maps 执行此操作。无论您创建图像,这都适用。基本语法(来自维基百科)是:
<img src="bild.jpg" alt="alternative text" usemap="#mapname" />
<map name="mapname">
<area shape="rect" coords="9,372,66,397" href="http://en.wikipedia.org/" />
</map>
您可以拥有任意数量的area 元素。您可以使用如上所示的常规 href URL,也可以使用 JavaScript 事件。支持所有典型的鼠标事件(onclick、onmouseover、onmouseout、onmousedown、onmouseup 等)
如果您只有简单的矩形,则没有地图的替代方法是仅将多个图像连续放置,没有边距或填充。
【讨论】:
area 元素上;另见W3School explanation。 @Wrikken,我的理解是我们正在处理一组中的几个矩形,而不是单个像素。
对于您所描述的内容,您可以考虑改用 HTML5 画布功能。也就是说,不是在 PHP 中使用 GD 创建静态图像,而是在浏览器中使用 Javascript 动态创建图像。然后,您可以提供全方位的交互性并对鼠标移动、点击做出反应。
以这个绘画应用为例: http://mugtug.com/sketchpad/
不过,这将要求您的用户拥有支持 Canvas(firefox、chrome)的浏览器,或者对于 IE,使用类似“explorercanvas”的浏览器。我相信 IE9 出来时会支持画布,所以应该可以解决这个问题。
【讨论】:
输入 type="image" 将为您提供单击图像的坐标,但在“普通”HTML 和服务器端 PHP 中仅此而已。
HTML:
<input type="image" name="myimage" src="whatever.png">
PHP:
$x = $_POST['myimage_x'];
$y = $_POST['myimage_y'];
要进行更多交互,您必须查看 javascript,并且要获得更多可能性,我衷心推荐 Raphael 作为跨浏览器(用于 I.E 的 VML,其余为 SVG)工具,能够处理更复杂的图像和事件在该图像的(部分)上。
【讨论】: