Ver Mensaje Individual
  #11 (permalink)  
Antiguo 04/05/2011, 07:53
Avatar de stramin
stramin
 
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 17 años
Puntos: 336
Respuesta: Anemómetro y veleta

Ah, ok, se puede pero sin animaciones, si quieres animaciones mejor hazlo en flash.

si de círculos se trata la función para hacerlos es:

imageellipse($img,centro X,centro Y,Ancho,Alto,Color);

pero si no quieres el circulo completo si no solo una parte es:

imagearc($img,centro X,centro Y,Ancho,Alto,Inicio,Final,Color);

para hacer puntos o lineas relativas a un circulo necesitas 2 funciones trigonométricas, seno y coseno, no necesitas mas, pero recuerda que las funciones de PHP no operan con grados si no con radianes, pero PHP tiene su función para convertir de grados a radianes:

imageline($img,cos(deg2rad(grado))*distancia+Centr o X, sin(deg2rad(grado))*distancia+Centro Y, cos(deg2rad(Grado))*Largo+Centro X, sin(deg2rad(grado))*distancia+Centro Y,$black);

Para hacer barras como esa existen 2 tipos de rectangulo, los que son solo el borde y los que son relleno, utiliza ambos para crear un medidor:

imagefilledrectangle($img,Inicio X,Inicio Y,Final X,Final Y,Color); //relleno
imagerectangle($img,Inicio X,Inicio Y,Final X,Final Y,Color); //borde

puedes poner otras imágenes como fondo o para adornar en tu imagen usando

imagecopy($img,$mi_png,Ubicacion X,Ubicacion Y,Fuente X,Fuente Y,Fuente Ancho,Fuente Alto); // copia una imagen fuente en el destino
imagecopyresized($img,$mi_png,Ubicacion X,Ubicacion Y,Fuente X,Fuente Y,Destino Ancho,Destino Alto,Fuente Ancho,Fuente Alto); // copia una imagen y la redimensiona.

Por ultimo GD2 tiene varias herramientas de texto, te pongo aquí las 2 básicas:

imagestring($img,Fuente,X,Y,"Texto",Color); // Escribe texto
imagestringup($img,Fuente,X,Y,"Texto",Color); // Escribe texto hacia arriba

para que entiendas mejor, prueba este ejemplo en un archivo PHP nuevo (vacío):

Código PHP:
Ver original
  1. <?php
  2. header("Content-Type: image/png");
  3. $img=imagecreate(600,600);
  4. $white=imagecolorallocate($img,255,255,255);
  5. $black=imagecolorallocate($img,0,0,0);
  6. $gray=imagecolorallocate($img,128,128,128);
  7. $red=imagecolorallocate($img,255,0,0);
  8. $green=imagecolorallocate($img,0,255,0);
  9. $blue=imagecolorallocate($img,0,0,255);
  10. imageellipse($img,100,100,150,150,$black);
  11. imagearc($img,300,100,150,150,180,360,$black);
  12. for($f=180;$f<=360;$f+=15){
  13.     imageline($img,cos(deg2rad($f))*70+500,sin(deg2rad($f))*70+100,cos(deg2rad($f))*75+500,sin(deg2rad($f))*75+100,$black);
  14.     imagestringup($img,0,cos(deg2rad($f))*80+497,sin(deg2rad($f))*80+100,$f,$black);
  15. }
  16. imagefilledrectangle($img,70,250,90,450,$gray);
  17. imagefilledrectangle($img,70,400,90,450,$red);
  18. imagerectangle($img,70,250,90,450,$black);
  19. imagefilledrectangle($img,100,250,120,450,$gray);
  20. imagefilledrectangle($img,100,350,120,450,$green);
  21. imagerectangle($img,100,250,120,450,$black);
  22. imagefilledrectangle($img,130,250,150,450,$gray);
  23. imagefilledrectangle($img,130,300,150,450,$blue);
  24. imagerectangle($img,130,250,150,450,$black);
  25. imagestring($img,0,100,100,"circulo",$black);
  26. imagestringup($img,0,300,100,"circulo",$black);
  27. for($f=0;$f<=200;$f+=10){
  28. imagestring($img,0,50,450-3-$f,$f."°",$black);
  29. }
  30. imagepng($img);
  31. ?>
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D