2016-06-22 8 views
2

Это мой PHP-файл (arc.php), который должен производить толстое половину дуги:Arc рисовать с несовершенством

<?php 
$img = imagecreatetruecolor(2000, 1000);  
$white = imagecolorallocate($img, 255, 255, 255); 
imagesetthickness($img, 200); 
imagearc($img, 1000, 1000, 1900, 1900, 180, 360, $white); 
imagepng($img); 
imagedestroy($img); 


Изображение генерируется с помощью кли:

php arc.php > arc.png 


До сих пор так хорошо ... Теперь, кто-нибудь знает, почему я получаю эти недостатки в t он образ.

enter image description here

ответ

2

comments in the documentation для imagesetthickness, кажется, подразумевают, что эллипсы и дуги не играют хорошо с толщиной настройки. Независимо от того, является ли это ошибкой или какая-либо особенность дискуссируется. Независимо от того, предлагаемый метод обхода использует небольшую толщину и многократно рисует форму больше и больше.

В вашем случае, это будет выглядеть примерно так:

<?php 
$img = imagecreatetruecolor(2000, 1000); 
$white = imagecolorallocate($img, 255, 255, 255); 

// Slightly thicker than 1 pixel to compensate pixel aliasing 
imagesetthickness($img, 2); 

$thickness = 200; 
for ($i = $thickness; $i > 0; $i--) { 
    imagearc($img, 1000, 1000, 1900 - $i, 1900 - $i, 180, 360, $white); 
} 

imagepng($img); 
imagedestroy($img); 

который генерирует следующее изображение: enter image description here
Вы, вероятно, нужно настроить результаты немного, но это должно быть достаточно, чтобы вы начали вниз по правильному пути.

+0

Произошло то же самое, просто для того, чтобы установить толщину = 2. Это сделало трюк. Благодарю. Кстати, если это ошибка или нет, я бы так сказал ... Если ее можно использовать с дугой, тогда она также должна вести себя так, как ожидалось! ... =) – marc