Das letzte Mal habe ich über eine einfache Zeichenmethode gesprochen, die GD vermeidet, und dann habe ich GD verwendet, um die einfachste „Zeichnung“ zu zeichnen – eine gerade Linie.
Dieses Mal werde ich weiterhin eine gerade Linie nach unten zeichnen. Die im letzten Code ausführlich erläuterten Teile werden dieses Mal nicht wiederholt.
<?
Header("Inhaltstyp: image/png");
$im = ImageCreate (200, 100);
$col_black = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
// Lasst uns heute Orange verwenden.
// Genau die gleiche Verwendung wie die Imageline-Funktion,
ImageDashedLine($im,0,100,199,100,$col_orn);
// Dies zeichnet eine gepunktete Linie.
// Machen wir unten einen Test. Wird verwendet, um ein Problem zu veranschaulichen.
$col_yel = ImageColorAllocate($im, 255,255,0);
//Gelb.
ImageLine($im,0,99,199,99,$col_yel);
// Zeichne eine gelbe Linie am unteren Rand des Bildes.
ImageLine($im,200,0,200,100,$col_orn);
// Versucht, eine orangefarbene Linie am äußersten rechten Rand des Bildes zu zeichnen, aber es ist nichts passiert.
// Dies zeigt, dass der Koordinatenbereich eines Bildes mit einer Breite von 200 und einer Höhe von 100 (0,0) bis (199,99) beträgt.
ImagePNG($im);
ImageDestroy($im);
// Lassen Sie uns zunächst diesen Abschnitt beenden.
?>
Der nächste Effekt wird großartig sein! Ich lerne jetzt auch und verkaufe jetzt. PHP 4.0.6 und höher fügt diese Verwendung hinzu – Sie können Linien in alternativen Farben zeichnen! Ein Beispiel ist wie folgt:
<?
Header("Inhaltstyp: image/png");
$im = ImageCreate (200, 100);
$col_black = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$style=array($col_red,$col_red,$col_black,$col_orn,$col_orn,$col_orn,$col_black);
ImageSetStyle($im, $style);
ImageLine($im, 0, 50, 199, 50, IMG_COLOR_STYLED)
;
ImageDestroy($im);
?>
Schauen Sie sich den Effekt an.
Bitte erläutern Sie die drei Zeilen, die ich durch Leerzeilen getrennt habe. Es wird ein Array $style definiert, dessen Mitglieder eine Reihe von Farben sind;
Dann wurde eine Funktion ausgeführt und dann wurde IMG_COLOR_STYLED „color“ verwendet, um solch eine magische „gerade Linie“ zu zeichnen –
Roter, schwarzer, oranger Wechseleffekt. Wenn Sie genau hinsehen, werden Sie feststellen, dass wir die abwechselnde Reihenfolge von Rot, Schwarz und Orange definieren
Die Reihenfolge der $style-Array-Mitglieder: Rot, Rot, Schwarz, Orange, Orange, Orange, Schwarz, und dann beginnt der Zyklus von vorne ...
Verstehst du? Beachten Sie, dass diese Funktion erst nach PHP 4.0.6 unterstützt wird.
Mit den Grundlagen des Strichzeichnens, die ich ausführlich erklärt habe, möchte ich die Funktionen zum Zeichnen anderer geometrischer Figuren in einem Rutsch schreiben. Was ich alle daran erinnern muss, ist, dass es, egal welche Art von geometrischer Figur Sie zeichnen, nichts weiter ist, als mehrere Elemente dieser Figur zu erfassen. Ohne die Farbe zuerst zu zählen, sind die Elemente verschiedener Grafiken wie folgt:
Punkt, zwei Elemente: Abszisse und Ordinate,
Rechteck, vier Elemente: Abszisse und Ordinate,
Bogen in der oberen linken Ecke und untere rechte Ecke. So verstehen Sie: Bogen kann Bogen umfassen, Ellipsenbogen; zeichnen Sie einen Bogen und zeichnen Sie 360 Grad, um einen Kreis zu bilden; zeichnen Sie einen Ellipsenbogen und zeichnen Sie 360 Grad, um einen Kreis zu bilden.
Es bildet eine Ellipse; daher gibt es sechs Elemente dieses Bogens: die horizontalen und vertikalen Koordinaten des Mittelpunkts, die Länge der horizontalen Achse, die Länge der vertikalen Achse sowie die Anfangs- und Endpunkte des Bogens.
Schauen Sie sich das folgende Beispiel an.
<?
Header("Inhaltstyp: image/png");
$im = ImageCreate (200, 100);
$col_blk = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$col_grn = ImageColorAllocate($im, 0,255,0);
$col_blu = ImageColorAllocate($im, 0,0,255);
ImageSetPixel($im,20,10,$col_orn);
// Es ist ein kleiner Punkt, ich frage mich, ob man ihn sehen kann?
ImageRectangle($im,25,20,95,55,$col_blu);
// Blaues Rechteck.
ImageArc($im,20,85,50,40,225,360,$col_grn);
// Grüner elliptischer Bogen, Mittelpunkt bei (20,85), horizontale Achse 50, vertikale Achse 40, 225 Grad bis 360 Grad.
// Es ist zu erkennen, dass die Anfangs- und Endpunkte des Bogens hier in Winkeln gemessen werden.
// Es wird im Uhrzeigersinn berechnet, wobei die horizontale rechte Richtung 0 Grad beträgt.
ImageArc($im,160,60,40,40,0,360,$col_orn);
// Orangefarbener Vollkreis. Solange die Länge der horizontalen Achse gleich der Länge der vertikalen Achse ist, handelt es sich um einen perfekten Kreis.
// Wir haben alle in der High School gelernt: Ein Kreis ist ein Sonderfall einer Ellipse!
//Zeichne endlich einen weiteren Bogen. Kann der Mittelpunkt des Kreises außerhalb des Bildes liegen?
ImageArc($im,160,140,240,240,0,360,$col_red);
// Dürfen!
ImagePNG($im);
ImageDestroy($im);
?>
Natürlich ist es beim Zeichnen unvermeidlich, einen bestimmten Bereich in einer bestimmten Farbe zu malen. GD verfügt über drei Färbemethoden: Eine ist die Färbung rechteckiger Flächen.
Eine besteht darin, den umschlossenen Bereich einzufärben, in dem sich der angegebene Punkt befindet, und die andere darin, den von der angegebenen Farbe umgebenen Bereich einzufärben. Schauen Sie sich die folgenden Beispiele an:
<?
Header("Inhaltstyp: image/png");
$im = ImageCreate (200, 100);
$col_blk = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
$col_yel = ImageColorAllocate($im, 255,255,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$col_grn = ImageColorAllocate($im, 0,255,0);
$col_blu = ImageColorAllocate($im, 0,0,255);
ImageFilledRectangle($im,20,10,100,50,$col_blu);
ImageFilledRectangle($im,5,40,50,90,$col_red);
ImageFilledRectangle($im,40,80,100,95,$col_orn);
ImageFilledRectangle($im,90,35,110,90,$col_yel);
//Das Obige ist die erste Färbung. Zeichnen Sie das Rechteck direkt.
// Ich habe bewusst einen kleinen Bereich mit vier Rechtecken unterschiedlicher Farbe umgeben.
// Wird zur Veranschaulichung der zweiten Farbgebung verwendet.
ImagePNG($im);
ImageDestroy($im);
// Schauen Sie sich den Effekt an.
?>
Dann:
<?
Header("Inhaltstyp: image/png");
$im = ImageCreate (200, 100);
$col_blk = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
$col_yel = ImageColorAllocate($im, 255,255,0);
$col_red = ImageColorAllocate($im, 255,0,0);
$col_grn = ImageColorAllocate($im, 0,255,0);
$col_blu = ImageColorAllocate($im, 0,0,255);
ImageFilledRectangle($im,20,10,100,50,$col_blu);
ImageFilledRectangle($im,5,40,50,90,$col_red);
ImageFilledRectangle($im,40,80,100,95,$col_orn);
ImageFilledRectangle($im,90,35,110,90,$col_yel);
//Das Obige ist die erste Färbung. Zeichnen Sie das Rechteck direkt.
// Ich habe bewusst einen kleinen Bereich mit vier Rechtecken unterschiedlicher Farbe umgeben.
> // Wird zur Veranschaulichung der zweiten Farbgebung verwendet.
ImageFill($im,70,70,$col_grn);
// Das ist die zweite Färbung.
ImageRectangle($im,120,40,190,90,$col_grn);
// Zeichnen wir ein Rechteck, um den Rahmen zu erstellen. Tatsächlich kann jede Randform als Rahmen verwendet werden.
ImageFilltoBorder($im,130,50,$col_grn,$col_orn);
// Malen Sie das grüne Rechteck orange.
// Solange der angegebene Punkt innerhalb des Geltungsbereichs dieser „Box“ liegt, hat er nichts mit der Position des Punktes im Bereich zu tun.
// Diese Funktion funktioniert tatsächlich so:
// Beginnen Sie am angegebenen Punkt und suchen Sie nach außen nach der Grenze der angegebenen Farbe. Wenn gefunden, stoppen Sie.
// Wenn Sie es nicht finden können, malen Sie die Durchgangspunkte mit der erforderlichen Farbe.
ImagePNG($im);
ImageDestroy($im);
// Schauen Sie sich den Effekt an.
// Jetzt ist das Bild, das wir gemacht haben, bunt, aber im Browser, auf dem Bild,
// Rechtsklick->Eigenschaften: Nur 214 Bytes!
?>
Lassen Sie uns dieses Mal hier aufhören.