Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/03/2009, 14:44
lerry
(Desactivado)
 
Fecha de Ingreso: enero-2009
Mensajes: 103
Antigüedad: 15 años, 3 meses
Puntos: 0
Dibujo de lineas de colores en php

Hola amigos!! Tengo un problema. Yo estoy dibujando una seria de lineas en php con la libreria GD. El Asunto es que cada una de esas lineas va a tener un color distinto de acuerdo a un estatus, los valores de los estatus lo tengo guardado en un arreglo q se llama $status4, donde este arreglo solo tiene 5 nombres de estatus diferentes, q son: Operativo, Planificado, Desincorporado, Al Aire, y Activo, Para cada estatus estoy tratando de pintar la linea de un color diferente, resulta q cuando el arreglo tiene en su contenido solo dos estatus: Operativo o Planificado se me dibujan las lineas correctamente con el color q le estoy dando, pero cuando el arreglo tiene mas de 2 estatus no se me dibuja la imagen, la verdad q no se porq eso sucede. La imagen es un archivo q se llama linea4.php q me dibuja el conjunto de lineas, les voy a colocar el archivo linea4.php para q lo revisen y me ayuden a determinar el problema:

<?php
$x1=$_GET['x1'];
$y1=$_GET['y1'];
$x2=$_GET['x2'];
$y2=$_GET['y2'];
$radios4=unserialize (urldecode ($_GET ['radi4']));
$status4=unserialize (urldecode ($_GET ['statu4']));
/*$col1=0;
$col2=0;
$col3=0;*/


$im = imagecreate(256,6000) or die("Error creando la imagen");
$fondo = imagecolorallocate($im, 255, 255, 255); // blanco

/*Dibujando las lineas de Radio-Radio que vienen de los nodos 2do tramo*/

if ($radios4!=0 and $radios4!="")
{
foreach($radios4 as $a => $va1)
{
$y11=80*$a;
$y1=10+$y11;
foreach($va1 as $i => $va2)
{
$resu1=pow($x2,2);
$resu2=pow($a,2);
$resu3=$resu1+$resu2;
$resu4=Sqrt($resu3);
$resu5=round($resu4);

/*Verifico el estatus del enlace antes de pintar la linea para establecer el color del enlace*/
switch($status4[$a][$i])
{
case 'Planificado':
//parametros para pintar la linea de color naranja=>StatusEnlace=>Planificado
$col1=255;
$col2=120;
$col3=30;
$linea = imagecolorallocate($im, $col1, $col2, $col3); //color de la linea de enlace
imageline($im,$x1,$y1,$resu5,$y2,$linea);
$y2=$y2+80;
break;
case 'Operativo':
//parametros para pintar la linea de color verde=>StatusEnlace=>Operativo
$col1=0;
$col2=200;
$col3=0;
$linea = imagecolorallocate($im, $col, $col2, $col3); //color de la linea de enlace
imageline($im,$x1,$y1,$resu5,$y2,$linea);
$y2=$y2+80;
break;
case 'Desincorporado':
//parametros para pintar la linea de color negro=>StatusEnlace=>Desincorporado
$col1=0;
$col2=0;
$col3=200;
$linea = imagecolorallocate($im, $col1, $col2, $col3); //color de la linea de enlace
imageline($im,$x1,$y1,$resu5,$y2,$linea);
$y2=$y2+80;
break;
case 'Al Aire':
//parametros para pintar la linea de color amarillo=>StatusEnlace=>Al Aire
$col1=255;
$col2=255;
$col3=0;
$linea = imagecolorallocate($im, $col1, $col2, $col3); //color de la linea de enlace
imageline($im,$x1,$y1,$resu5,$y2,$linea);
$y2=$y2+80;
break;
case 'Activo':
//parametros para pintar la linea de color amarillo=>StatusEnlace=>Al Aire
$col1=0;
$col2=255;
$col3=255;
$linea = imagecolorallocate($im, $col1, $col2, $col3); //color de la linea de enlace
imageline($im,$x1,$y1,$resu5,$y2,$linea);
$y2=$y2+80;
break;
}

}
}
}

header("Content-type: image/gif");
imagegif($im);
imagedestroy($im);

?>

El codigo me funciona pero solo cuando el arreglo $status4 contiene como maximo dos valores de estatus, cuando hay mas de tres valores distintos de estatus en el arreglo (Ejemplo: Operativo, Planificado, Desincorporado) no se me dibujan las lineas, por favor ayudenme con este problema, gracias...