PHP gevorderde |
|
Ik heb een voorbeeld
http://mette.zo...=poll/zien
ik krijg een lijn in het midden. hoe komt dit??
<?php
header("content-type: image/png");
if(isset($_GET['ver'])){
$maal100 = 2;
//dit is het aantal keer dat de standaard breedte (die ik heb ingesteld op 100) moet vergroot worden
$hoogte = 10 + 3;
//hoogte voor de balk
$breedte= (100 * $maal100) + 50;
//dit is de breedte van de balk (standaard: 100; dat (als je je resultaten op 100 meegeeft met $_GET['ver']) je beter zo laat staan) maal het aantal keer groter dan 100 (die wordt ingesteld enkele regels hierboven)
$image = ImageCreate($breedte, $hoogte);
//deze waarden zijn de waarden van (!)héél de afbeelding! dus niet alleen het balkje; altijd een paar pixels (of wat zijn het?) bijtellen anders komt het niet goed uit (<- voor de hoogte); voor de breedte ongeveer 50 bijtellen want de tekst moet er ook nog bij
$bgcolor = ImageColorAllocate($image, 213, 213, 213); //'is gelijk aan de bgcolor van de site'
ImageFill($image, 0, 0, $bgcolor);
$grijs = ImageColorAllocate($image, 102, 102, 102);
$groen = ImageColorAllocate($image, 132, 170, 132);
$punt1[0] = 0;
$punt1[1] = 0;
$punt1[2] = $breedte+1; // +1 --> zo past de tweede balk - met de resultaten - er netjes in
$punt1[3] = 0;
$punt1[4] = $breedte+1; // +1 --> zo past de tweede balk - met de resultaten - er netjes in
$punt1[5] = $hoogte;
$punt1[6] = 0;
$punt1[7] = $hoogte;
ImagePolygon($image, $punt1, 4, $grijs);
ImageLine($image,0,$hoogte/2,$breedte,$hoogte/2,$grijs);
$ver= $_GET['ver'] * $maal100;
//dit is de breedte van de tweede polygen(veelhoek) (met de eigenlike procent): (verklaring:) die breedte moet natuurlijk ook aangepast worden aan de eerste balk, daarom vermenigvuldigen we hem met $maal100 dat ook bij de breedte van de eerste balk is gebeurd (zie boven)
$punt2[0] = 1;
$punt2[1] = 1;
$punt2[2] = $ver;
$punt2[3] = 1;
$punt2[4] = $ver;
$punt2[5] = $hoogte-1; //altijd om een waarde minder omdat het rood dan mooi in de andere polygon(vierhoek) komt.
$punt2[6] = 1;
$punt2[7] = $hoogte-1;
ImageFilledPolygon($image, $punt2, 4, $groen);
if($_GET['ver']!=100){//om te voorkomen dat je een dubbele lijn krijgt op het einde van de balk wanneer het 100% aangeeft.
ImageLine($image,$ver,0,$ver,$hoogte,$grijs);
}
ImageString($image, 3, $breedte+5, 0, $_GET['ver']." %", $grijs);
//ImageFilter($image,IMG_FILTER_CONTRAST,5);
ImagePNG($image);
ImageDestroy($image);
}
?>
<?php header("content-type: image/png"); $maal100 = 2; //dit is het aantal keer dat de standaard breedte (die ik heb ingesteld op 100) moet vergroot worden $hoogte = 10 + 3; //hoogte voor de balk $breedte= (100 * $maal100) + 50; //dit is de breedte van de balk (standaard: 100; dat (als je je resultaten op 100 meegeeft met $_GET['ver']) je beter zo laat staan) maal het aantal keer groter dan 100 (die wordt ingesteld enkele regels hierboven) $image = ImageCreate($breedte, $hoogte); //deze waarden zijn de waarden van (!)héél de afbeelding! dus niet alleen het balkje; altijd een paar pixels (of wat zijn het?) bijtellen anders komt het niet goed uit (<- voor de hoogte); voor de breedte ongeveer 50 bijtellen want de tekst moet er ook nog bij $bgcolor = ImageColorAllocate($image, 213, 213, 213); //'is gelijk aan de bgcolor van de site' ImageFill($image, 0, 0, $bgcolor); $grijs = ImageColorAllocate($image, 102, 102, 102); $groen = ImageColorAllocate($image, 132, 170, 132); $punt1[0] = 0; $punt1[1] = 0; $punt1[2] = $breedte+1; // +1 --> zo past de tweede balk - met de resultaten - er netjes in $punt1[3] = 0; $punt1[4] = $breedte+1; // +1 --> zo past de tweede balk - met de resultaten - er netjes in $punt1[5] = $hoogte; $punt1[6] = 0; $punt1[7] = $hoogte; ImagePolygon($image, $punt1, 4, $grijs); ImageLine($image,0,$hoogte/2,$breedte,$hoogte/2,$grijs); $ver= $_GET['ver'] * $maal100; //dit is de breedte van de tweede polygen(veelhoek) (met de eigenlike procent): (verklaring:) die breedte moet natuurlijk ook aangepast worden aan de eerste balk, daarom vermenigvuldigen we hem met $maal100 dat ook bij de breedte van de eerste balk is gebeurd (zie boven) $punt2[0] = 1; $punt2[1] = 1; $punt2[2] = $ver; $punt2[3] = 1; $punt2[4] = $ver; $punt2[5] = $hoogte-1; //altijd om een waarde minder omdat het rood dan mooi in de andere polygon(vierhoek) komt. $punt2[6] = 1; $punt2[7] = $hoogte-1; ImageFilledPolygon($image, $punt2, 4, $groen); if($_GET['ver']!=100){//om te voorkomen dat je een dubbele lijn krijgt op het einde van de balk wanneer het 100% aangeeft. ImageLine($image,$ver,0,$ver,$hoogte,$grijs); } ImageString($image, 3, $breedte+5, 0, $_GET['ver']." %", $grijs); //ImageFilter($image,IMG_FILTER_CONTRAST,5); ImagePNG($image); ImageDestroy($image); } ?>
|