2016-06-22 20 views
2

Diese meine PHP-Datei ist (arc.php), die eine dicke Halb Bogen produzieren sollte:Arc zeichnen mit Unvollkommenheiten

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


Das erzeugte Bild wird über cli:

php arc.php > arc.png 


So weit, so gut ... Nun, weiß jemand, warum bekomme ich diese Unvollkommenheiten in t er Bild.


enter image description here

Antwort

2

Die comments in the documentation für imagesetthickness scheint zu implizieren, dass Ellipsen und Bögen mit einer Dicke Einstellungen nicht schön spielen. Ob dies ein Fehler oder eine Funktion ist, ist umstritten. Unabhängig davon ist die vorgeschlagene Problemumgehung die Verwendung einer kleinen Dicke und wiederholtes Zeichnen der Form immer größer.

In Ihrem Fall wäre es etwa so aussehen:

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

Welche folgendes Bild erzeugt: enter image description here
Sie wahrscheinlich die Ergebnisse ein wenig anpassen müssen, aber das sollte genug sein, um Ihnen den Einstieg den richtigen Weg hinunter.

+0

Hat das Gleiche gemacht, nur fogetting, um die Dicke = 2 zu setzen. Das hat den Trick gemacht. Vielen Dank. Übrigens, wenn es ein Fehler ist oder nicht, würde ich es so sagen ... Wenn es mit arc verwendet werden kann, sollte es sich auch wie erwartet verhalten! ... =) – marc