Hejsan.
Jag satt här och lekte lite idag och fösökte skapa en bild med php, och har väl kommit ganska långt på vägen, men nu har det skitit sig för mig...
Och det är inte omöjligt att jag bara behöver en mattelektion, men jag tror ändå att det är imagefill() som jäklas med mig...
Lite kod
<?php
header("Content-type: image/png");
$imageSizeArr['height'] = 498;
$imageSizeArr['width'] = 498;
$image = imagecreate($imageSizeArr['width'],$imageSizeArr['height']);
$bg = imagecolorallocate($image,0,0,0);
function oddeven($x){
if($x & 1){
return "odd";
} else {
return "even";
}
}
function createOctagons($hz, $imageSizeArr, $image)
{
$color = imagecolorallocate($image, 255, 170, 0);
// nedanstående färg bara i testsyfte
$color_2 = imagecolorallocate($image, 20, 170, 20);
$middle_x = $imageSizeArr['width'] / 2;
$middle_y = $imageSizeArr['height'] / 2;
if ($imageSizeArr['height'] != $imageSizeArr['width']){
if ($imageSizeArr['height'] > $imageSizeArr['width']){
$size = $imageSizeArr['width'];
} else {
$size = $imageSizeArr['height'];
}
} else {
$size = $imageSizeArr['height'];
}
for ($i = 1; $i < $size; $i = $i + $hz)
{
$x1 = $middle_x - ((1*$hz) * $i);
$y1 = $middle_y - ((3*$hz) * $i);
$x8 = $middle_x - ((3*$hz) * $i);
$y8 = $middle_y - ((1*$hz) * $i);
$x2 = $middle_x + ((1*$hz) * $i);
$y2 = $middle_y - ((3*$hz) * $i);
$x3 = $middle_x + ((3*$hz) * $i);
$y3 = $middle_y - ((1*$hz) * $i);
$x7 = $middle_x - ((3*$hz) * $i);
$y7 = $middle_y + ((1*$hz) * $i);
$x6 = $middle_x - ((1*$hz) * $i);
$y6 = $middle_y + ((3*$hz) * $i);
$x5 = $middle_x + ((1*$hz) * $i);
$y5 = $middle_y + ((3*$hz) * $i);
$x4 = $middle_x + ((3*$hz) * $i);
$y4 = $middle_y + ((1*$hz) * $i);
$outerArr = array($x1, $y1, $x2, $y2, $x3, $y3, $x4, $y4, $x5, $y5, $x6, $y6, $x7, $y7, $x8, $y8);
imagepolygon($image, $outerArr, 8, $color);
$x18 = $middle_x - ($i+($hz/2));
$y18 = $middle_y - ($i+($hz/2));
/*
$x23 = $middle_x + ($i+($hz/2));
$y23 = $middle_y - ($i+($hz/2));
$x76 = $middle_x - ($i+($hz/2));
$y76 = $middle_y + ($i+($hz/2));
$x54 = $middle_x + ($i+($hz/2));
$y54 = $middle_y - ($i+($hz/2));
*/
GLOBAL $fill;
if ($fill == TRUE){
$test = oddeven($i);
if ($test == "odd"){
imagefill($image, $x18, $y18, $color_2);
/*
imagefill($image, $x23, $y23, $color_2);
imagefill($image, $x76, $y76, $color_2);
imagefill($image, $x54, $y54, $color_2);
*/
}
}
}
return $size / $hz;
}
if (isset($_GET['n'])){
$numHz = $_GET['n'];
} else {
$numHz = 4;
}
$fill = TRUE;
createOctagons($numHz, $imageSizeArr, $image);
imagepng($image);
imagedestroy($image);
?>
Nu är problemet då att jag vill att den innersta oktagonen eller vad man kallar dem, skall bli fylld med färg, sedan varannan efter det. Mitt problem är att om jag "hardcode:ar" in det i scriptet, så får jag det nästan att fungera, men om jag skall göra det dynamiskt, så att man kan ändra avstånd och mängd figurer, så funkar inte den lösningen. Och som jag har det nu så fylls med hälten av bilden med $color_2 färgen, istället för bara de fält som är varannan från mitten...
Bifogar en fil på hur det ser ut nu, och så skriver jag ett nytt inlägg där jag bifogar bilden som jag vill ha den, som jag redigerat till den i PSP.
MVH Patrik

