即时通讯在PHP中创建一条线,到目前为止它显示正常,但我现在遇到的问题是线条不平滑,它显示为突破边缘。以下是制作半径线的代码:
function draw_radius($img, $x1, $y1, $radius, $angle, $arrow_color, $arrow_length = 10, $arrow_width = 3)
{
$x2 = $x1 + $radius * cos(deg2rad($angle-90));
$y2 = $y1 + $radius * sin(deg2rad($angle-90));
imageline($img, $x1, $y1, $x2, $y2, $arrow_color);
$distance = sqrt(pow($x1 - $x2, 2) + pow($y1 - $y2, 2));
$dx = $x2 + ($x1 - $x2) * $arrow_length / $distance;
$dy = $y2 + ($y1 - $y2) * $arrow_length / $distance;
$k = $arrow_width / $arrow_length;
$x2o = $x2 - $dx;
$y2o = $dy - $y2;
$x3 = $y2o * $k + $dx;
$y3 = $x2o * $k + $dy;
$x4 = $dx - $y2o * $k;
$y4 = $dy - $x2o * $k;
imageline($img, $x1, $y1, $dx, $dy, $arrow_color);
imageline($img, $x3, $y3, $x4, $y4, $arrow_color);
imageline($img, $x3, $y3, $x2, $y2, $arrow_color);
imageline($img, $x2, $y2, $x4, $y4, $arrow_color);
}
以下是指南针示例,我正在绘制线条。
compass example http://img246.imageshack.us/img246/6329/compassx.png
答案 0 :(得分:2)
您需要使用具有抗锯齿功能的图像处理库。 An explanation of the technique。我没有建议您使用哪个库:我不使用PHP进行图像处理。
答案 1 :(得分:2)
我自己没有在GD中尝试过抗锯齿,但它似乎就在那里......
答案 2 :(得分:1)
你可以尝试this,但按照他们的例子,它看起来不太好。您可以在评论中尝试其他一些选项。
答案 3 :(得分:0)
cairo做好抗锯齿效果。