Pintando Elementos e suas Bordas
Cor - Entendendo a Mistura de Cores
Vamos lá, selecione um retângulo, clique no botão

e acompanhe.
Uma janela de diálogo de Preenchimento e Traços está aberta com a aba "Preencher" ativa. Dentro temos outra caixa com abas e a "RGB" está ativa. Nela você vê 4 barras com gradientes de cor. Mova seus marcadores como na animação ao lado e veja o efeito.
Entendendo: O que são os gradientes
R,
G,
B e
A? Ao mover o marcador do gradiente
R, você modifica a intenciadade do canal
R (Red, ou seja, Vermelho) na composição da cor. Porque o gradiente
R não é vermelho na maioria dos casos? Bem, nem o
G é verde e nem o
B é azul também. Esse gradiente te ajuda a prever que cor você terá ao mover o marcador para uma certa posição. Veja na animação: Quando o retângulo estava azul, o gradiente
R estava variando entre o azul atual e o lilaz. E nessa mesma animação o marcador
R é movido para o valor máximo, onde estava a cor lilaz e essa cor é atribuida ao retângulo. O gradiente
A é um tanto diferente dos outros... Ele define o canal alfa, quanto mais alto o valor, mais opaco, quanto menor mais transparente. Note como o retângulo vai ganhando transpârencia conforme o marcador
A é movido para o valor mínimo até que no fim fica como se não tivesse preenchimento.
Mas porque temos 4 abas para fazer mistura de cor?
No momento não faz muita diferença definirmos a cor em
RGB ou
CMYK. O SVG vai guardar todas as cores como
RGB, mas já existem planos para estender a definição de cor e dar suporte a
CMYK. Existem 4 formas de definição de cor para ajudar você a definr a cor da forma que lhe for conveniente. As formas de mistura de cor funcionam de forma bastante diferente, vamos ver sobre cada uma:
RGB
Este é o modelo de mistura de cores por adição, simulando a mistura de luz, onde
R,
G e
B significam Red, Green e Blue, ou seja, Vermelho, Verde e Azul. Esse modelo se tronou bastante popular, porque é desta forma que o monitor pode apresentar cores, então é assim que o software deve repassar a cor e é mais fácil pedir ao usuário que defina a cor neste modelo. É dessa forma que você percebe as cores do mundo. Seus olhos captam mistura de luz, então quando você vê algo laranja, você está recebendo uma grande intensidade de luz vermelha misturada com uma mediana de verde. Sim! 100% de Vermelho com 50% de Verde dá Laranja, quando a mistura de cores é aditiva.
Cores Primárias: Vermelho, Verde e Azul
Misturas para exemplo
(Apresentando os valores numéricos para R, G e B respectivamente):
-
255 + 255 + 255 = Branco
-
255 + 255 + 0 = Amarelo
-
255 + 150 + 0 = Laranja
-
0 + 200 + 255 = Azul Médio Pastel
-
0 + 255 + 255 = Azul Ciano
-
255 + 0 + 255 = Magenta
-
255 + 150 + 255 = Lilaz
HSL
Essa é uma outra forma de definição de cor, baseada no RGB.
H,
S e
L significam Hue, Saturação e Luminosidade. Hue é o aspecto que nomeia a cor, como verde, ciano, magenta... Saturação define o quão reprentativa é a cor na composição. Com saturação 0 a cor some e a composição fica cinza, com o valor máximo a composição ganha cor viva. Luminosidade em 50% aprecenta a cor "normal", sem interferência de excesso ou falta de luz. Com luminosidade abaixo de 50% a cor escurece e acima a cor clareia.
Misturas para exemplo
(Apresentando os valores numéricos para H, S e L respectivamente):
-
... + ... + 255 = Branco
-
42 + 255 + 128 = Amarelo
-
25 + 255 + 128 = Laranja
-
137 + 255 + 128 = Azul Médio Pastel
-
128 + 255 + 128 = Azul Ciano
-
212 + 255 + 128 = Magenta
-
212 + 255 + 203 = Lilaz
CMYK
Este é o modelo de mistura de cores por subtração, simulando a mistura de tinta, onde
C,
M,
Y e
K significam Ciano, Magenta, Amarelo e Preto. Esse é o modelo de definição de cor mais adequado para impressão, por motivos óbvios.

Já sabemos desde a infância que misturando tinta amarela com azul temos verde, mas mesmo assim, faça alguns testes para ver como isso acontece com valores numéricos. Quando estiver definindo uma cor nesse modelo pense que você vai espalhar uma certa quantidade de tinta em uma superficie branca, mas só o valor máximo representa tinta suficiente para cobrir o papel, abaixo disso a cor vai ficar clareada quando espalhar.
Cores Primárias: Magenta, Amarelo e Ciano
Misturas para exemplo
(Apresentando os valores numéricos para C, M, Y e K respectivamente):
-
0 + 0 + 0 + 0 = Branco
-
0 + 0 + 100 + 0 = Amarelo
-
0 + 41 + 100 + 0 = Laranja
-
100 + 22 + 0 + 0 = Azul Médio Pastel
-
100 + 0 + 0 + 0 = Azul Ciano
-
0 + 100 + 0 + 0 = Magenta
-
0 + 41 + 0 + 0 = Lilaz
Roda
Essa é uma forma puramente visual de definir uma cor atravéz do modelo
HSL. Uma ponta do triângulo toca no círculo de cor que contem os valores de Hue. Afastando-se desta ponta você diminue a saturação. Aproximando-se de cada uma das outras extremidades você almenta ou diminue o brilho.
Voltando para o assunto "Entendendo a Mistura de Cores"
Mas e aquele campo "RGBA" que contém um valor esquisito com números e letras?
Ah sim... esse é o valor hexadecimal que define o preenchimeto do elemento. É quase assim que o valor da cor é registrado no código SVG. Quem conhece HTML também já usou bastenate essa forma de definição de cor, a diferença é que aqui temos 4 unidades na composição
R,
G,
B e
A, mas atributos de cor tanto no HTML quanto no SVG carregam apenas
R,
G e
B. Esse campo existe para facilitar a cópia ou edição de valores de cores, basta modificar ali e você redefine sua cor de uma vêz só.
Ok ok... Ainda não expliquei o que é esse tal de hexadecimal. Poderiamos começar falando sobre binários e porque o hexadecimal é uma boa forma de representar o valor de cor, mas isso você pode ver na
Wikipedia. O que precisamos entender aqui é que a representação de
RGBA em hexadecimal exige 8 caracteres, 2 para cada unidade da composição e cada uma dessas duplas dessas representam um valor entre 0 e 255 decimal. Vamos ver isso de forma mais clára. Esse é o código de um preenchimento laranja com 50% de opacidade:
ffd20080 Isso equivale a: 255 de Vermelho, 210 de Verde, 0 de Azul, 128 de Alfa.
Porque? Como você já deve ter visto na
Wikipedia, em vez de termos 10 caracteres para representações numériacas (0 ... 9), como no decimal, aqui temos 16 caracteres (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, e F), com isso 00 hexa equivale a 0 decimal, 10 hexa equivale a 16 decimal e finalmente FF hexa equivale a 255 decimal.
Antes de passarmos para o próximo ponto desta aula, vejamos os botões da parte superior desta caixa de preenchimento:
-
Nenhuma pintura. Retira o preenchimento do elemento.
-
Cor lisa. Define uma cor única para o elemento, como estivemos fazendo até agora.
-
Gradiente linear. O elemento não terá uma cor única, mas uma variação de uma cor para outra (talvêz com pontos intermediários) seguindo a linha de gradiente.
-
Gradiente radial. A diferença nesse caso é que a variação sai do centro para as extremidades da elipice que definida pelos raios desse gradiente.
-
Preenchimento com Padrão. Um desenho será repetido dentro desse elemento, preenchendo-o.
-
Pintura indefinida. Isso não é o mesmo que "Nenhuma pintura". "Nenhuma pintura" define fill:none ao estilo do elemento, enquanto "Pintura indefinida" retira esse atributo de estilo, permitindo que a cor seja herdada. Como assim? Um elemento grupo pode ter seu próprio estilo e uma definição de cor para preenchimento. Essa é a cor padrão para elementos do grupo sem atributo de cor definido. Isso é mais útil para quem pretende manipular o código SVG posteriormente.
-
Não pintar intersessões. Caso exista sobreposição de um caminho por si mesmo, a área sobreposta se torna vazia.
-
Pintar intersessões. Toda a área definida pelo caminho será pintada.
Agora sim, podemos ir para o próximo ponto.
Gradiente ou Degradê - Tudo o que você queria saber
Bem, agora você já conhece a ferramenta

e os botões

e

. Essas são as formas pelas quais você pode iniciar um preenchimento com gradiente. Vamos lá, clique no botão gradiente linear, na janela de preenchimento, e você verá que será criado um gradiente da cor atual do elemento para essa mesma cor com o valor alfa igual a 0, ou seja um gradiente de nível de opacidade. Você quer mudar a direção do gradiente? Então use as ferramentas de edição de nós ou edição de gradientes para mover os pontos da reta do gradiente, como é feito na animação a direita.
Bom, você já criou o gradiente, já modificou sua direção, agora vamos mudar as cores. Dentro da janela de preenchimento temos a caixa "Gradiente linear" e ali temos um botão "Editar", Clique nele.
Você está vendo agora a janela "Editor de Gradiente". A primeira caixa de seleção contém a cor inicial do seu gradiente e um nome "stop####". Clique ali e mude para a segunda parada
(só existem duas no gradiente recém criado). Pronto, agora a "Cor da Parada" já se refere a segunda parada com mesma cor e alfa 0. Aumente o valor do canal alfa e mude a cor dessa parada para termos um gradiente mais interessante.
Como exercício crie outros gradientes lineares e radiais, para criar um gradiente radial use o botão

. Tudo o mais funciona da mesma forma para os dois tipos de gradiente.
Veja na animação ao lado, outros detalhes sobre gradientes. Note que tanto na barra contextual da ferramenta de criação e edição de gradientes, quanto na janela de preenchimento temos uma caixa de seleção com os gradientes já criados para que você possa reutilizar. Assim você não precisa recriar gradientes complexos quando for necessário reutilizar em elementos diferentes. Você também pode usar o botão "Duplicar" para fazer uma cópia do gradiente atual e criar um variante.
Você notou também que no exemplo temos um gradiente com mais variações de cor. Isso conseguimos adicionando novas paradas ao gradiente. Então, clique no botão "Acrescentar Parada" na janela "Editor de Gradiente" e edite a cor das novas paradas. Veja na animação que existem 4 paradas no gradiente de exemplo
(se você se perdeu na hora de editar as paradas do seu gradiente, veja na animação onde se abrem as cores base do gradiente, na janela "Editor de Gradiente").
Quando você acrescenta uma parada ao gradiente ela aparece no meio do caminho entre a parada atual e a próxima, mas e se essa não forma a melhor posição? Você pode mudar a posição de uma parada pela janela "Editor de Gradiente" mudando o valor de tipografia ou movendo o ponto de controle diretamente no desenho. Veja na animação que após mudar a inclinação do gradiente a parada amarela tem sua posição movida da posição 0,45 para 0,60 e isso se reflete no reposicionamento do ponto de controle do gradiente. O mesmo aconteceria em sentido contrário se você mudar a posição da parada movendo o ponto de controle.
E o que é aquela caixa de seleção "Repetir" na janela de preenchimento? Bem lembrado! Veja na animação que as opções são "nenhum", "refletido" e "direto". Essa caixa de seleção define o comportamento do gradiente além dos limites do da linha que define o gradiente. Como funcionam as opções:
- Nenhum: O que você já tem usado, mantém cor lisa fora dos limites da definição do gradiente.
- Refletido: O gradiente continua após os limites do gradiente invertendo seu sentido para dar sensação de continuidade e suavidade.
- Direto: O gradiente repete-se com o mesmo sentido após os limites do gradiente.
Padrões
Padrões são muito mais simples do que parecem. Partindo logo para a prática, vamos fazer uma estrela preenchida com sorrisos. Crie uma carinha sorridente como a da direita e agrupe-a
(note que a seleção não toca nos olhos e na boca da carinha, isso porque coloquei um retângulo com alfa 0 como parte do grupo. Isso serve para dar um espaço entre as carinhas quando ela for usada como padrão da estrela). Agora, selecione o grupo da carinha e clique no menu
Objeto > Padrão de Preenchimento > Objetos para Padrão.
Ok! Agora temos nosso primeiro padrão definido. Crie uma estrela, abra a janela de Preenchimento e clique no botão de Preenchimento com Padrão. Sua estrela receberá imediatamente esse padrão recém criado. Alí na caixa "Padrão de Preenchimento" você encontra uma caixa de seleção de padrões, então você pode criar vários e aplicar como quiser e onde quiser.
E não é só isso! Ao selecionar um elemento com preenchimento de padrões, usando a ferramenta de edição de nós, você vê 3 pontos de controle, exatamente como aparecem a esquerda da nossa estrela de exemplo. Com o
X você reposiciona o padrão, com o círculo você gira o padrão e com o quadrado você redimenciona o padrão.
Tipos de Bordas
Vamos saltar agora para a terceira aba da janela de "Peenchimento e Traço".
Epa! E a segunda? A segunda aba faz tudo o que a primeira faz, mas se aplica aos contornos. Teste-a um pouco e volte pra ca.
A terceira aba tem a aparência mostrada a direita, e apesar de termos mais botões e opções aqui, é bem mais simples entender essa aba.
A primeira opção de configuração é a "Largura", que define a espessura da linha. Mais claro que isso, só vendo o exemplo abaixo, onde temos linhas com largura crescente de 1 até 12 pixels. Você pode redefinir a unidade de medida da largura na caixa de seleção ao lado.
A opção "Juntar" define como o cotovelo dos nós angulares do caminho serão desenhados. As 3 opções na sequência são
miter (pontudo),
round (arredondado) e
bevel (chanfrado). Veja abaixo a aprência dos caminhos idênticos com juntas diferentes:
Quando usamos a junta pontuda
(miter), alguns nós ganham uma projeção exagerada, por terem um ângulo mais fechado. Para restringir o ângulo mínimo para recebimento da ponta, definimos o "Limite de Aguçamento". Quanto menor o valor deste campo, maior o ângulo mínimo onde a ponta será aplicada. Ângulos abaixo do valor limite serão chanfrados. Veja como se comporta um caminho com junta
miter e valores diferenciados de limite de aguçamento:

"Ponta" define o limite do caminho, quando este não é fechado. As opções são:

Sem ponta, como você vê no zoom ao lado, a linha acaba exatamente nos nós das extremidades do caminho.

Ponta quadrada. A ponta se expande além do nó das extremidades, metade da largura do caminho.

Ponta arredondada. Define-se um semi-círculo nas extremidades do caminho.
Atenção! Essas opções interferem no pontilhado do traço. Se você quiser uma linha pontilhada ou tracejada (como veremos abaixo), defina o caminho como "sem ponta".
Na opção "Traços" você define se a linha é continua ou não. Basta selecionar na caixa de opções o tipo de pontilhado ou tracejado da linha. Veja alguns exemplos:
Finalmente temos 3 caixas de opções com marcadores, de início, centrais e final. Os marcadores centrais aparecem em cada nó interno do caminho. Veja o exemplo abaixo onde um círculo é usado como marcador inicial, um losango como central e uma ponta de seta como final.
Sobre a Opacidade Mestre
Opacidade mestre é definida pela barra percentual na parte inferior da janela "Peenchimento e Traço". Ela funciona exatamente como o canal alfa que já vimos, mas se aplica ao elemento como um todo. Se houver um gradiente, a opacidade de todo o gradiente será reduzida com a redução da opacidade mestre, o mesmo vale para todo tipo de preenchimento.
Tanto o preenchimento quanto a borda de um elemento podem ter sua opacidade definidas de forma independente, mas temos um resultado diferente quando aplicamos opacidade mestre em lugar de usar o canal alfa de cada parte do elemento. Perceba o exemplo:
Desfocagem?
Um dos grandes benefícios das imagens vetoriais é garantir boa definição dos desenhos em qualquer caso. Você sempre tem uma idéia clara dos limites dos elementos.

Contudo, em alguns casos, é interessante ter um elemento desfocado, borrado, com limites diluidos. A grande importância da desfocagem é permitir desenhos fotorealistas em SVG, mas também pode ser bastante útil para outros casos.
No exemplo ao lado temos duas estrelas com sombra, mas na segunda sombra foi adcionada desfocagem, o que torna a sombra um tanto mais natural. Muito mais pode ser conseguido com esse filtro. Veja o que foi criado no
Concurso de criação da "Janela Sobre" do Inkscape 0.45, cujo foco era demonstrar o uso deste filtro. Teste-o modificando o valor do campo "Borrado" na janela "Peenchimento e Traço".