Da última vez falei sobre um método de desenho simples que evita GD, e então usei GD para desenhar o "desenho" mais simples - uma linha reta.
Desta vez continuarei traçando uma linha reta para baixo. As partes que foram explicadas detalhadamente no último código não serão repetidas desta vez.
<?
Header("Tipo de conteúdo: imagem/png");
$im = ImagemCriar (200, 100);
$col_black = ImageColorAllocate($im, 0,0,0);
$col_orn = ImageColorAllocate($im, 255.192,0);
// Vamos usar laranja hoje.
//Exatamente o mesmo uso da função imageline,
ImageDashedLine($im,0,100,199,100,$col_orn);
// Isso desenha uma linha pontilhada.
// Vamos fazer um teste abaixo. Usado para ilustrar um problema.
$col_yel = ImageColorAllocate($im, 255.255,0);
//amarelo.
ImageLine($im,0,99,199,99,$col_yel);
// Desenhe uma linha amarela na borda inferior da imagem.
ImageLine($im,200,0,200,100,$col_orn);
// Tentei desenhar uma linha laranja na extremidade direita da imagem, mas nada aconteceu.
// Isso mostra que o intervalo de coordenadas de uma imagem com largura de 200 e altura de 100 é (0,0) a (199,99).
ImagemPNG($im);
ImagemDestroy($im);
// Vamos encerrar esta seção primeiro.
?>
O próximo efeito será ótimo! Também estou aprendendo agora e vendendo agora. PHP 4.0.6 e superior adicionam esse uso - você pode desenhar linhas em cores alternativas! Um exemplo é o seguinte:
<?
Header("Tipo de conteúdo: imagem/png");
$im = ImagemCriar (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)
;
ImagemDestroy($im);
?>
Veja o efeito.
Por favor, explique as três linhas que separei com linhas em branco. É definido um array $style, cujos membros são uma série de cores;
Em seguida, uma função foi executada e IMG_COLOR_STYLED "cor" foi usada para desenhar uma "linha reta" mágica ——
Efeito alternado vermelho, preto e laranja. Se você olhar com atenção, descobrirá que a sequência alternada de vermelho, preto e laranja é o que definimos
A sequência de membros do array $style: vermelho, vermelho, preto, laranja, laranja, laranja, preto e então o ciclo começa novamente...
Você entende? Observe que esta função só é suportada após o PHP 4.0.6.
Com os fundamentos do desenho de linhas que expliquei em detalhes, quero escrever as funções para desenhar outras figuras geométricas de uma só vez. O que preciso lembrar a todos é que não importa que tipo de figura geométrica você desenhe, nada mais é do que apreender vários elementos dessa figura. Sem contar primeiro a cor, os elementos de vários gráficos são os seguintes:
ponto, dois elementos: abscissa e
retângulo ordenado, quatro elementos: abscissa e
arco ordenado no canto superior esquerdo e canto inferior direito. Entenda desta forma: o arco pode incluir arco,. Arco elíptico; desenhe um arco e desenhe 360 graus para formar um círculo;
Forma uma elipse; portanto, existem seis elementos deste arco: as coordenadas horizontais e verticais do ponto central, o comprimento do eixo horizontal, o comprimento do eixo vertical e os pontos inicial e final do arco.
Veja o exemplo a seguir.
<?
Header("Tipo de conteúdo: imagem/png");
$im = ImagemCriar (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);
// É um pequeno ponto, será que dá para ver?
ImageRectangle($im,25,20,95,55,$col_blu);
// Retângulo azul.
ImageArc($im,20,85,50,40,225,360,$col_grn);
// Arco elíptico verde, centro em (20,85), eixo horizontal 50, eixo vertical 40, 225 graus a 360 graus.
// Pode-se ver que os pontos inicial e final do arco aqui são medidos em ângulos.
// É calculado no sentido horário com a direção horizontal direita como 0 graus.
ImageArc($im,160,60,40,40,0,360,$col_orn);
// Círculo completo laranja. Desde que o comprimento do eixo horizontal seja igual ao comprimento do eixo vertical, é um círculo perfeito.
// Todos nós aprendemos no ensino médio: um círculo é um caso especial de elipse!
//Finalmente desenhe outro arco. O centro do círculo pode estar fora da imagem?
ImageArc($im,160,140,240,240,0,360,$col_red);
// Pode!
ImagemPNG($im);
ImagemDestroy($im);
?>
Claro que é inevitável pintar uma determinada área com uma determinada cor ao desenhar. GD tem três métodos de coloração, um é a coloração de área retangular,
Uma é colorir a área delimitada onde o ponto especificado está localizado e a outra é colorir a área circundada pela cor especificada. Veja os seguintes exemplos:
<?
Header("Tipo de conteúdo: imagem/png");
$im = ImagemCriar (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);
//O acima é a primeira coloração. Desenhe o retângulo diretamente.
// Cerquei deliberadamente uma pequena área com quatro retângulos de cores diferentes.
// Usado para ilustrar a segunda coloração.
ImagemPNG($im);
ImagemDestroy($im);
// Dê uma olhada no efeito.
?>
Então:
<?
Header("Tipo de conteúdo: imagem/png");
$im = ImagemCriar (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);
//O acima é a primeira coloração. Desenhe o retângulo diretamente.
// Cerquei deliberadamente uma pequena área com quatro retângulos de cores diferentes.
> // Usado para ilustrar a segunda coloração.
ImageFill($im,70,70,$col_grn);
// Esta é a segunda coloração.
ImagemRetângulo($im,120,40,190,90,$col_grn);
// Vamos desenhar um retângulo para fazer a moldura. Na verdade, qualquer formato de borda pode ser usado como moldura.
ImageFilltoBorder($im,130,50,$col_grn,$col_orn);
// Pinte o retângulo verde de laranja.
// Contanto que o ponto especificado esteja dentro do escopo desta "caixa", não tem nada a ver com a posição do ponto na área.
// Esta função realmente funciona assim:
//Comece a partir do ponto especificado e procure o limite da cor especificada. Se encontrado, pare.
// Se não conseguir encontrar, pinte os pontos de passagem com a cor desejada.
ImagemPNG($im);
ImagemDestroy($im);
// Dê uma olhada no efeito.
// Agora a foto que fizemos é colorida, mas no navegador, na foto,
// Clique com o botão direito->Propriedades: Apenas 214 bytes!
?>
Vamos parar por aqui desta vez.