La última vez hablé sobre un método de dibujo simple que evita GD, y luego usé GD para dibujar el "dibujo" más simple: una línea recta.
Esta vez seguiré trazando una línea recta hacia abajo. Las partes que se explicaron en detalle en el último código no se repetirán esta vez.
<?
Encabezado("Tipo de contenido: imagen/png");
$im = Crear Imagen (200, 100);
$col_black = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255,192,0);
// Usemos naranja hoy.
// Exactamente el mismo uso que la función imageline,
ImageDashedLine($im,0,100,199,100,$col_orn);
// Esto dibuja una línea de puntos.
// Hagamos una prueba a continuación. Se utiliza para ilustrar un problema.
$col_yel = ImageColorAllocate($im, 255,255,0);
//amarillo.
ImageLine($im,0,99,199,99,$col_yel);
// Dibuja una línea amarilla en el borde inferior de la imagen.
ImageLine($im,200,0,200,100,$col_orn);
// Intenté dibujar una línea naranja en el extremo derecho de la imagen, pero no pasó nada.
// Esto muestra que el rango de coordenadas de una imagen con un ancho de 200 y una altura de 100 es (0,0) a (199,99).
ImagenPNG($im);
ImageDestroy($im);
// Primero terminemos esta sección.
?>
¡El próximo efecto será genial! También estoy aprendiendo ahora y vendiendo ahora. PHP 4.0.6 y superiores agregan este uso: ¡puedes dibujar líneas en colores alternativos! Un ejemplo es el siguiente:
<?
Encabezado("Tipo de contenido: imagen/png");
$im = Crear Imagen (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, $estilo);
ImageLine($im, 0, 50, 199, 50, IMG_COLOR_STYLED);
ImagenPNG($im);
ImageDestroy($im);
?>
Mira el efecto.
Explique las tres líneas que separé con líneas en blanco. Se define un array $style, cuyos miembros son una serie de colores;
Luego se ejecutó una función y luego se usó IMG_COLOR_STYLED "color" para dibujar una "línea recta" tan mágica——
Efecto alterno rojo, negro y naranja. Si miras con atención, encontrarás que la secuencia alterna de rojo, negro y naranja es lo que definimos
La secuencia de miembros de la matriz $style: rojo, rojo, negro, naranja, naranja, naranja, negro, y luego el ciclo comienza de nuevo...
¿Lo entiendes? Tenga en cuenta que esta función solo se admite después de PHP 4.0.6.
Con los conceptos básicos del dibujo lineal que expliqué en detalle, quiero escribir las funciones para dibujar otras figuras geométricas de una sola vez. Lo que necesito recordarles a todos es que no importa qué tipo de figura geométrica dibujes, no es más que captar varios elementos de esta figura. Sin contar el color primero, los elementos de varios gráficos son los siguientes:
punto, dos elementos: abscisa y ordenada,
rectángulo, cuatro elementos: abscisa y ordenada,
arco en la esquina superior izquierda y en la esquina inferior derecha. Comprenda de esta manera: el arco puede incluir el arco. Arco elíptico; dibuja un arco y dibuja 360 grados para formar un círculo; dibuja un arco elíptico y dibuja 360 grados para formar un círculo.
Forma una elipse; por lo tanto, hay seis elementos de este arco: las coordenadas horizontales y verticales del punto central, la longitud del eje horizontal, la longitud del eje vertical y los puntos inicial y final del arco.
Mire el siguiente ejemplo.
<?
Encabezado("Tipo de contenido: imagen/png");
$im = Crear Imagen (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 un pequeño punto, me pregunto si se puede ver.
ImagenRectangle($im,25,20,95,55,$col_blu);
// Rectángulo azul.
ImageArc($im,20,85,50,40,225,360,$col_grn);
// Arco elíptico verde, centro en (20,85), eje horizontal 50, eje vertical 40, 225 grados a 360 grados.
// Se puede ver que los puntos inicial y final del arco aquí se miden en ángulos.
// Se calcula en el sentido de las agujas del reloj con la dirección horizontal derecha como 0 grados.
ImageArc($im,160,60,40,40,0,360,$col_orn);
// Círculo completo naranja. Siempre que la longitud del eje horizontal sea igual a la longitud del eje vertical, es un círculo perfecto.
// Todos aprendimos en la escuela secundaria: ¡un círculo es un caso especial de una elipse!
//Finalmente dibuja otro arco. ¿Puede el centro del círculo estar fuera de la imagen?
ImageArc($im,160,140,240,240,0,360,$col_red);
// ¡Poder!
ImagenPNG($im);
ImageDestroy($im);
?>
Por supuesto, es inevitable pintar una determinada zona de un determinado color al dibujar. GD tiene tres métodos de coloración, uno es la coloración de áreas rectangulares,
Uno es colorear el área cerrada donde se encuentra el punto especificado y el otro es colorear el área rodeada por el color especificado. Mire los siguientes ejemplos:
<?
Encabezado("Tipo de contenido: imagen/png");
$im = Crear Imagen (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);
// Lo anterior es el primer color. Dibuja el rectángulo directamente.
// Deliberadamente rodeé un área pequeña con cuatro rectángulos de diferentes colores.
// Se utiliza para ilustrar el segundo color.
ImagenPNG($im);
ImageDestroy($im);
// Echa un vistazo al efecto.
?>
Entonces:
<?
Encabezado("Tipo de contenido: imagen/png");
$im = Crear Imagen (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);
// Lo anterior es el primer color. Dibuja el rectángulo directamente.
// Deliberadamente rodeé un área pequeña con cuatro rectángulos de diferentes colores.
> // Se utiliza para ilustrar el segundo coloreado.
ImageFill($im,70,70,$col_grn);
// Este es el segundo colorante.
ImageRectangle($im,120,40,190,90,$col_grn);
// Dibujemos un rectángulo para hacer el marco. De hecho, cualquier forma de borde se puede utilizar como marco.
ImageFilltoBorder($im,130,50,$col_grn,$col_orn);
// Pinta el rectángulo verde de naranja.
// Siempre que el punto especificado esté dentro del alcance de este "cuadro", no tiene nada que ver con la posición del punto en el área.
// Esta función realmente funciona así:
//Comience desde el punto especificado y mire hacia afuera en busca del límite del color especificado. Si lo encuentra, deténgase.
// Si no lo encuentras, pinta los puntos de paso con el color requerido.
ImagenPNG($im);
ImageDestroy($im);
// Echa un vistazo al efecto.
// Ahora la imagen que hicimos es colorida, pero en el navegador, en la imagen,
// Clic derecho->Propiedades: ¡Solo 214 bytes!
?>
Detengámonos aquí esta vez.