Além de linhas, a lista de funções para traçar figuras geométricas básicas inclui também funções para criar retângulos e arcos. No caso dos retângulos, há 2 funções : uma para desenhar apenas a borda, sem preencher o interior - strokeRect - e outra para desenhá-lo preenchido - fillRect.
/* ... */ ctx.beginPath(); ctx.fillRect (10,10,60,100); ctx.strokeRect (75,10,60,100); ctx.clearRect (30, 50, 25, 25); ctx.closePath(); var grausFin = 360; var radFin = (Math.PI/180) * grausFin; ctx.beginPath(); ctx.arc(180, myCanvas.height / 2, 25, 0, radFin, false); ctx.stroke(); ctx.closePath(); ctx.beginPath(); ctx.arc(230, myCanvas.height / 2, 25, 0, radFin, false); ctx.fill(); ctx.closePath(); |
Já a função clearRect que aparece no código acima serve para limpar uma área retangular do canvas, tornando-a transparente. Isto é, a área é totalmente preenchida com a cor de fundo da tag onde o Canvas está inserido, substituindo os pixels contidos na área. A utilidade desse recurso está em preparar o canvas para receber novos desenhos sem sofrer interferência daqueles que existiam anteriormente.
Os parâmetros das funções de retângulo são sempre o ponto superior esquerdo (x, y) seu comprimento e sua altura.
Como mostra o exemplo anterior, o desenho de um círculo é feito através da função arc. O que determina se ele será preenchido ou não é a função chamada depois : use fill para preenchê-lo ou stroke para desenhar apenas o seu contorno.
Os parâmetros da função para desenhar arco são o ponto central (x, y), seu raio, o ângulo na circunferência onde o desenho será iniciado, o ângulo final e um booleano indicando se o desenho será feito no sentido anti-horário. Como diz o nome da função, ela traça um arco entre o ângulo inicial e final, formando parte de um círculo com centro em (x, y) e o raio dado. Isso implica que temos que informar os ângulos 0 (zero) e 2pi se quisermos desenhar um círculo completo. Observe que os ângulos são informados em radianos e não em graus. A fórmula (PI * 180 / graus) que aparece no exemplo faz a conversão de graus para radianos.
As cores aplicadas em linhas e nos preenchimentos são controladas de forma independente entre si. Ao traçar linhas – aí incluindo a função para desenhar somente as bordas de um retângulo ou arco – a cor é ditada pela propriedade strokeStyle do canvas, enquanto para fazer qualquer preenchimento, a cor usada é aquela atribuída ao fillStyle.
/* ... */ ctx.beginPath(); ctx.fillStyle = "rgb(45,80,150)"; ctx.strokeStyle = "maroon"; ctx.fillRect (10,10,60,100); ctx.strokeRect (75,10,60,100); ctx.closePath(); var grausFin = 360; var radFin = (Math.PI/180)* grausFin; ctx.fillStyle = "#FFA500"; ctx.strokeStyle = "green"; ctx.beginPath(); ctx.arc(180, myCanvas.height / 2, 25, 0, radFin, false); ctx.stroke(); ctx.closePath(); ctx.beginPath(); ctx.arc(230, myCanvas.height / 2, 25, 0, radFin, false); ctx.fill(); ctx.closePath(); |
Um outro aspecto importante para traçar linhas e desenhar bordas é a espessura que a linha deve ter. Podemos modificar o valor contido na propriedade lineWidth do canvas para obter linhas mais grossas. O valor padrão dela que corresponde a 1 unidade, sendo que ela aceita valores positivos.
/* ... */ var angIni = 3 * Math.PI / 2; var angFin = Math.PI / 2, x, i; /* Linhas e arcos */ x = 5; for (i = 0; i < 10; i ++) { ctx.lineWidth = i + 1; ctx.lineCap = "round"; ctx.beginPath(); ctx.moveTo (x, 5); ctx.lineTo (x, 35); ctx.stroke(); ctx.closePath(); ctx.beginPath(); ctx.arc(x, 75, 20, angIni, angFin, false); ctx.stroke(); ctx.closePath(); x = x + 15; }; /* Bordas de retângulos */ ctx.beginPath(); ctx.lineWidth = 8; ctx.strokeRect(180, 5, 100, 100); ctx.lineWidth = 6; ctx.strokeRect(190, 15, 80, 80); ctx.lineWidth = 4; ctx.strokeRect(200, 25, 60, 60); ctx.lineWidth = 2; ctx.strokeRect(210, 35, 40, 40); ctx.closePath(); |
No exemplo acima, modifiquei também a propriedade lineCap, que determina como o desenho de linhas será arrematado. Ao usar o valor "round", instruo o canvas a arredondar as pontas das linhas ao invés de deixá-las retas, como no comportamento padrão.
No próximo post, falo sobre uso de textos, imagens e como modificar o modo que os desenhos aplicados ao canvas interagem entre si, criando composições entre eles.
Nenhum comentário :
Postar um comentário
OBS: Os comentários enviados a este Blog são submetidos a moderação. Por isso, eles serão publicados somente após aprovação.
Observação: somente um membro deste blog pode postar um comentário.