我在 gd 库的imagefilledpolygon()
.
出于某种原因,我的一些线条最终错位了 1px,所以我决定使用 imagepixelset 对其进行调试,以将我的形状点的颜色设置为红色。
alt text http://www.degreeshowcase.com/other/1.gif 如果你看图片,你会看到一些点在形状内部......有些在外面......它非常不合逻辑。
(图片已按比例放大以使其更明显)
有没有人有办法解决吗?
更新:
我对上述形状的观点是:0,0 40,0 40,20 20,20 20,40 0,40
我要求生成的形状的高度和宽度应该是 20 的倍数......但由于某种原因,某些形状最终会达到 21 px 高或宽。
我已经制作了一个脚本来计算得到我想要的形状的要点,但我无法弄清楚为什么,所以我无法制定一个脚本来纠正我所有的形状。
<?php
// set up array of points for polygon
$values = array(0,0, 39,0, 39,20, 19,20, 19,39, 0,39);
//My original values were 0,0 40,0 40,20 20,20 20,40 0,40
//I do not understand why some values require minus 1 and others can remain as they were (a multiple of 20)
// create image
$image = imagecreatetruecolor(40, 40);
// allocate colors
$bg = imagecolorallocate($image, 200, 200, 200);
$blue = imagecolorallocate($image, 0, 0, 255);
// fill the background
imagefilledrectangle($image, 0, 0, 39, 39, $bg);
// draw a polygon
imagefilledpolygon($image, $values, 6, $blue);
// flush image
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>