2010-02-21 3 views
3

im faisant une ligne en php et jusqu'à présent, il montre bien, mais quel problème im obtenir maintenant est la ligne n'est pas lisse, il montre que les bords de rupture. est le code pour faire la ligne de rayon:php image flèche ligne doit être lisse

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); 


} 

suivant est l'exemple de boussole, qui im ​​dessinant la ligne sur.

compass example http://img246.imageshack.us/img246/6329/compassx.png

Répondre

2

Vous devez utiliser une bibliothèque de traitement d'image qui a des propriétés anti-aliasing. An explanation of the technique. Je n'ai aucune suggestion pour quelle bibliothèque vous devriez utiliser: Je n'utilise pas PHP pour le traitement d'image.

+0

Vous n'avez aucune suggestion pour une bibliothèque et n'utilisez pas PHP pour le traitement d'image? Vous n'utilisez donc pas d'images dans vos applications? –

1

Vous pouvez essayer this, mais en suivant leur exemple, cela ne semble pas génial. Il y a quelques autres options que vous pourriez essayer dans les commentaires.

0

cairo n'anticrénelage bien.

Questions connexes