Processamento Digital de imagem
Aula Nº 5. Teoria da cor.
Questões de Estudo:
1. Percepção da luz e as cores.
2. Sistemas de cor.
3. Leis do Grassman.
Questão de Estudo Nº 1. Percepção da luz e as cores.
A primeira questão que deve discutir-se é a maneira em que o olho
humano está preparado para receber e processar os sinais luminosos,
para isso por meio de um esquema das partes mais importantes do
olho se explica, de maneira simples seu funcionamento, ressaltando o
fato de que o olho é um sistema óptico cujo plano focal está na retina,
este sistema se adapta entre certos limites produto da deformação do
cristalino.
Figura 2-1. Partes do olho humano. À direita as células
fotorreceptoras.
O olho, ao igual ao ouvido é um transductor e portanto, sua
sensibilidade depende das características da radiação que recebe.
Como se conhece, a luz é um elemento material onde se manifesta a
dualidade onda partícula. Atendendo a suas propriedades ondular a
luz visível abrange desde 400 NM a 780 NM, a primeira longitude de
onda corresponde à violeta e a segunda ao vermelho.
Figura 2-2. Espectro de cores
Dado que a velocidade da luz é da ordem de 3x108 m/s a freqüência
da luz visível pode calcular-se como:
c
f=
λ f violeta =0 .75 x 10 15 Hz f vermelho =0 . 38 x 1015 Hz
O olho não possui a mesma sensibilidade a tudas as cores, inclusive,
esta troca com a hora do dia, em efeito as curvas de sensibilidade
diurna e crepuscular som:
A maior sensibilidade do olho se localiza nos 555 NM que corresponde
à cor verde-amarelo. As curvas de sensibilidade respondem à
adaptação do olho humano ao médio terrestre, o que implica também
a mudança da sensibilidade com a hora do dia já que, no crepúsculo
aumenta a componente vermelha na iluminação natural, portanto o
olho humano compensa este fato com um deslizamento da
sensibilidade nesta direcção.
Figura 2-3. Rendimento luminoso de um fluxo monocromático em
função da longitude de onda.
Do ponto de vista subjectivo, o olho possui 3 atributos ou seja:
O brilho (relacionado com a intensidade).
O matiz (também chamado tom ou tintura) (relacionado com a
longitude de onda predominante na cor).
A saturação (relacionado com o grau de pureza da cor) .
A percepção do brilho de uma imagem a realiza no olho os bastões.
Os bastões são umas células especializadas que temos na retina, em
um número superior a 100 milhões, que são capazes de detectar e
medir o brilho dos faz luminosos que lhes chegam. A sensação de
brilho está relacionada com dois fenômenos:
A sensibilidade à intensidade (É o que dota da capacidade de
distinguir um nível de intensidade de outro. A diferença de
intensidade se denomina contraste. diz-se que uma cena tem grande
contraste se as diferenças de intensidade que contém são
pronunciadas).
A inibição lateral (Origina-se no fato de que as células da retina, ao
detectar um nível de intensidade, inibem as células vizinhas,
produzindo perturbações nas fronteiras de mudança de intensidade.
Este fenômeno também influi em que o brilho percebido não esteja
em proporção directa com o brilho físico).
O matiz, tom ou tintura é um conceito que se deriva da relação que
se produz entre as activações dos distintos tipos de cones quando
sobre eles incide a luz. O matiz depende da longitude de onda
dominante, quer dizer, aquela para a que se encontra mais energia
no diagrama espectral.
A Saturação mede a proporção entre a longitude de onda dominante
e o resto de longitudes de onda. Na figura [2-4] apresenta-se um
exemplo de dois diagramas espectrais com o mesmo matiz, mas com
diferente saturação.
Figura 2-4. Dois espectros com o mesmo matiz, (a) corresponde a
um vermelho muito saturado e o (b) corresponde a um vermelho
pouco saturado.
Do ponto de vista fisiológico as cores podem considerar-se como uma
mescla de 3 cores fundamentais que são VERMELHO, VERDE e AZUL,
a sensibilidade a estes tons não é a mesma e na retina existem 3
tipos de células diferentes chamadas cones que se especializam em
cada um destes tons. A combinação do grau de sensibilidade para as
3 cores fundamentais nos leva a curva mostrada na figura anterior.
A fila de intensidades visíveis pelo olho é muito extensa e é da ordem
de 10-7 se considera que em um local existe uma boa iluminação
quando a intensidade da luz é da ordem de 0.16 W/m2.
Por outra parte, o olho em uma cena bem iluminada só pode
diferenciar objetos cujo ângulo visual é da ordem de 1´ de arco, o que
indica que, a 1m de distância o olho percebe corpos da ordem de 0.3
mm. Nas telas dos computadores cada pixel têm umas dimensões
cuja ordem de magnitude em sua máxima resolução é desta ordem,
por exemplo, para uma resolução de 96 pixel por polegada, cada
pixel tem um tamanho de 0.26 mm o que se corresponde com a
ordem dada, portanto há uma correspondência entre o mínimo
objecto que se percebe e o ponto que o gera na tela. As cores variam
sua sensibilidade com o tamanho do objecto, de maneira que por
exemplo no caso do azul este se perde a ângulos visuais da ordem de
12´ a 20´. Outra característica fisiológica importante é a persistência
da retina que dura como médio 1/20 s (50 MS). A percepção dos
objectos também depende do contraste dos mesmos com o fundo. Os
elementos assinalados devem se ter em conta na hora de realizar um
desenho gráfico.
Questão de Estudo Nº 2. Sistemas de cor.
Na arte da pintura, o desenho gráfico, o desenho visual, a fotografia,
a imprensa e na televisão, a teoria da cor é um grupo de regras
básicas na mescla de cores para conseguir o efeito desejado
combinando cores de luz ou pigmento. A luz branca se pode produzir
combinando o vermelho, o verde e o azul, enquanto que combinando
pigmentos cian, magenta e amarelo se produz a cor negra.
Em seu livro Teoria das Cores, o poeta e científico alemão Johann
Wolfgang von Goethe propôs um círculo de cor simétrica, o qual
compreende o estabelecido pelo matemático e físico inglês Isaac
Newton e os espectros complementares. Em contraste, o círculo de
cor do Newton, com sete ângulos de cor desiguais e subtendidos, não
expor a simetria e a complementaridade que Goethe considerou
como característica essencial da cor. Para o Newton, solo as cores
espectrais podiam considerar-se como fundamentais. O enfoque mais
empírico do Goethe lhe permitiu admitir o papel essencial da cor
magenta, que não é espectral, em um círculo de cor. Posteriormente,
os estudos da percepção da cor definiram o padrão CIE 1931, o qual é
um modelo perceptual que permite representar cores primárias com
precisão e convertê-los a cada modelo de cor de forma apropriada.
Teoria do Ostwald.
A teoria da cor proposta pelo químico e filósofo alemão Wilhelm
Ostwald consta de quatro sensações cromáticas elementares
(amarelo, vermelho, azul e verde) e duas sensações acromáticas
intermédias.
Modelo de cor RGB.
A mistura das cores primárias da luz, que são vermelho, verde e azul
(RGB, iniciais em inglês das cores primárias), realiza-se utilizando o
sistema de cor aditivo, também conhecido como o modelo RGB ou o
espaço de cor RGB. Todas as cores possíveis que podem ser criados
pela mescla destas três luzes de cor são aludidas como o espectro de
cor destas luzes em concreto. Quando nenhuma cor luz está
presente, percebe-se o negro. As cores primárias de luz têm aplicação
nos monitores de um computador, televisores, projetores de vídeo e
todos aqueles sistemas que utilizam combinações de materiais que
fosforescem no vermelho, verde e azul.
Deve-se ter em conta que só com umas cores «primárias» fictícias se
pode chegar a conseguir todas as cores possíveis. Estas cores
primárias são conceitos idealizados utilizados em modelos de cor
matemáticas que não representam as sensações de cor reais ou
inclusive os impulsos nervosos reais ou processos cerebrais. Em
outras palavras, todas as cores «primárias» perfeitos som
completamente imaginárias, o que implica que todas as cores
primárias que se utilizam nas mesclas são incompletos ou
imperfeitos.
O círculo cromático.
O círculo cromático está acostumado a representar-se como uma
roda dividida em doze partes. As cores primárias se colocam de modo
que um deles esteja na porção superior central e os outros duas na
quarta porção a partir desta, de modo que se unirmos os três com
umas linhas imaginárias formariam um triângulo equilátero com a
base horizontal. Entre duas cores primárias se colocam três tons
secundários de modo que na porção central entre eles corresponderia
a uma mescla de quantidades iguais de ambos os primários e a cor
mais próxima a cada primário seria a mescla do secundário central
mais o primário adjacente.
Os círculos cromáticos atuais utilizados pelos artistas
se apoiam no modelo CMY (Cian, Magenta, Yellow),
embora as cores primárias utilizadas em pintura
diferem das tintas de processo em imprensa em sua
intensidade.
Não obstante, como os próprios nomes jogam de
dados pelos fabricantes a suas cores primárias
Círculo
evidenciam, existe uma tradição ainda 0061ncorada
cromático
no modelo RYB e que ocasionalmente se encontra
CMY.
ainda em livros e em cursos orientados a aficionados à pintura. Mas o
ensino regrado, tanto em escolas de arte como na universidade, e os
textos de referência importantes já abandonaram tal modelo faz
décadas. A prova a temos nas cores orientadas ao ensino artístico de
diferentes fabricantes, que sem exceção utilizam um modelo de cor
apoiada no CMYK, que além das três cores primárias CMY incluem
negro e branco como jogo básico para o estudante.
Espaços de cores.
Um espaço de cor define um modelo de composição da cor. Pelo
general um espaço de cor o define uma base de N vetores (por
exemplo, o espaço RGB o formam 3 vetores: vermelho, verde e azul),
cuja combinação linear gera todo o espaço de cor. Os espaços de cor
mais generais tentam englobar a maior quantidade possível das cores
visíveis pelo olho humano, embora existam espaços de cor que
tentam isolar tão solo um subconjunto deles.
Existem espaços de cor de:
Uma dimensão: escala de cinzas, escala Jet, etc.
Duas dimensões: sub-espaço rg, sub-espaço xy, etc.
Três dimensões: espaço RGB, HSV, YCbCr, YUV, YI'Q', etc.
Quatro dimensões: espaço CMYK.
Dos quais, os espaços de cor de três dimensões são os mais
estendidos e os mais utilizados. Então, uma cor se especifica usando
três coordenadas, ou atributos, que representam sua posição dentro
de um espaço de cor específica. Estas coordenadas não nos dizem
qual é a cor, mas sim mostram onde se encontra uma cor dentro de
um espaço de cor em particular.
Espaço RGB.
RGB é conhecido
como um espaço
de cor aditivo
(cores primárias)
porque quando a
Cubo de cor RGB.
luz de duas
diferentes freqüências viaja junta, do ponto de vista do observador,
estas cores são somadas para criar novos tipos de cores. As cores
vermelha, verde e azul foram escolhidos porque cada um
corresponde aproximadamente com um dos três tipos de cones
sensitivos à cor no olho humano (65 % sensíveis ao vermelho, 33 %
sensíveis ao verde e 2 % sensíveis ao azul). Com a combinação
apropriada de vermelho, verde e azul se podem reproduzir muitos das
cores que podem perceber os humanos. Por exemplo, vermelho puro
e verde claro produzem amarelo, vermelho e azul produzem
magenta, verde e azul misturas criam cian e os três juntos mesclados
a máxima intensidade, criam o branco intenso.
Existe também o espaço derivado RGBA, que acrescenta o canal alfa
(de transparência) ao espaço RGB original.
Espaço CMYK.
CMY trabalha
mediante a
absorção da luz
Representação das cores CMYK.
(cores secundárias). As cores que se veem são a parte de luz que não
é absorvida. No CMY, magenta mais amarelo produzem vermelho,
magenta mais cian produzem azul, cian mais amarelo geram verde e
a combinação de cian, magenta e amarelo formam negro. O negro
gerado pela mescla de cores primárias subtrativas não é tão denso
como a cor negra pura (um que absorve todo o espectro visível). É
por isso que ao CMY original se acrescentou um canal chave (key),
que normalmente é o canal negro (black), para formar o espaço CMYK
ou CMYB. Atualmente as impressoras de quatro cores utilizam um
cartucho negro além das cores primárias deste espaço, o qual gera
um melhor contraste. Entretanto a cor que uma pessoa vê em uma
tela de computador difere da mesma cor em uma impressora, devido
a que os modelos RGB e CMY são distintos. A cor no RGB está feito
pela reflexão ou emissão de luz, enquanto que o CMY, mediante a
absorção desta.
Espaço YIQ.
Foi uma recodificação de cor realizada para a norma de televisão
cromática americana NTSC, que devia ser compatível com a televisão
em branco e negro. Os nomes dos componentes deste modelo são E
por luminância (luminance), I fase (in-phase) e Q quadratura
(quadrature). O primeiro é o sinal monocromático da televisão em
branco e negro e as duas últimas geram o tintura e saturação da cor.
Os parâmetros I e Q são nomeados em relação com o método de
modulação utilizada para codificar o sinal portadora. Os valores dos
sinais RGB são somados para produzir um único sinal E’ que
representa a iluminação ou brilho geral de um ponto em particular. O
sinal I é criado ao subtrair o Y' do sinal azul dos valores RGB originais
e logo o Q se realiza subtraindo o sinal Y' do vermelho.
Espaço HSV.
É um espaço cilíndrico, mas normalmente
associado a um cone ou cone hexagonal, devido a
que é um subconjunto visível do espaço original
com valores válidos do RGB.
Matiz (Hue): refere-se à frequência dominante da
cor dentro do espectro visível. É a percepção de
um tipo de cor, normalmente a que alguém
distingue em um arco-íris, quer dizer, é a Ejes HSV.
sensação humana de acordo a qual uma área parece similar a outra
ou quando existe um tipo de longitude de onda dominante.
Incrementa seu valor enquanto nos movemos de forma antihoraria no
cone, com o vermelho no ângulo 0.
Saturação (Saturation): refere-se à quantidade da cor ou à «pureza»
de este. Vai de uma cor «clara» a uma cor mais viva (azul céu – azul
escuro). Também se pode considerar como a mescla de uma cor com
branco ou cinza.
Valor (Value): é a intensidade de luz de uma cor. Dito de outra
maneira, é a quantidade de branco ou de negro que possui uma cor.
Modelo de cor RYB.
No modelo de cor RYB, o vermelho, o amarelo e o
azul se consideram cores primárias, e em teoria, o
resto de cores puras (cor matéria) pode ser criados
mesclando pintura vermelha, amarela e azul. Apesar
de seu obsolescência e imprecisão, muita gente
aprende algo sobre este modelo nos estudos de
educação primária, mesclando pintura ou lápis de Círculo
cores com estas cores primárias. cromático
O modelo RYB é ainda utilizado em geral em RYB.
conceitos de arte e pintura tradicionais, mas foi
totalmente descuidado de lado na mescla industrial de pigmentos de
pintura. Ainda sendo usado como guia para a mescla de pigmentos, o
modelo RYB não representa com precisão as cores que resultam de
mesclar as três cores RYB primárias, posto que o azul e o vermelho
som tonalidades verdadeiramente secundárias. Apesar da imprecisão
deste modelo, sua correção é o modelo CMYK, segue-se utilizando nas
artes visuais, o desenho gráfico e outras disciplinas afins, por tradição
do modelo original do Goethe de 1810.
Percepção da cor
Na retina do olho existem milhões de células especializadas em
detectar as longitudes de onda procedentes de nosso entorno. Estas
células fotoreceptoras, cones e as fortificações, recolhem parte do
espectro da luz e, graças ao efeito fotoelétrico, transformam-no em
impulsos elétricos, que são enviados ao cérebro através dos nervos
ópticos, para criar a sensação da cor.
Existem grupos de cones especializados em detectar e processar uma
cor determinada, sendo diferente o total deles dedicados a uma cor e
a outro. Por exemplo, existem mais células especializadas em
trabalhar com as longitudes de onda correspondentes ao vermelho
que a nenhuma outra cor, por isso quando o entorno em que nos
encontramos nos envia muito vermelho se produz uma saturação de
informação no cérebro desta cor.
Quando o sistema de cones e fortificações de uma pessoa não é o
correto se podem produzir uma série de irregularidades na
apreciação da cor, ao igual a quando as partes do cérebro
encarregadas de processar estes dados estão danificadas. Esta é a
explicação de fenômenos como o daltonismo. Uma pessoa daltônica
não aprecia as gamas de cores em sua justa medida, confundindo os
vermelhos com os verdes.
Devido a que o processo de identificação de cores depende do
cérebro e do sistema ocular de cada pessoa em concreto, podemos
medir com toda exatidão o espectro de uma cor determinada, mas o
conceito da cor produzida é totalmente subjetivo, dependendo da
pessoa em si. Duas pessoas diferentes podem interpretar uma cor
dado de forma diferente, e pode haver tantas interpretações de uma
cor como pessoas há.
O mecanismo de mescla e produção de cores produzida pela reflexão
da luz sobre um corpo não é o mesmo ao da obtenção de cores por
mescla direta de raios de luz.
Questão de Estudo Nº 3. Leis do Grassman.
As quatro Leis do Grassmann foram enunciadas em 1853 pelo físico
alemão Hermann Grassmann, que as sistematizou, estas leis são:
1ª Lei
Por síntese aditiva da cor é possível conseguir todas as cores
percebidas misturando três franjas do espectro visível
(vermelha, verde e azul) na proporção de intensidade
adequada, sempre que nenhum dos três valores escolhidos
possa se obter por mistura dos outros dois.
C=α ( A ) + β ( B ) +γ ( C )
Chamam-se radiações cromaticamente equivalentes às
radiações que produzem iguais sensações de matiz, saturação e
luminosidade, tendo diferente distribuição espectral.
Metamerismo: Simplificação da visão humana que permite
que duas luzes de composição espectral diferente produzam
idêntica sensação.
2ª Lei
Estabelece que quando se conseguiu a igualdade de cor
enunciada na primeira lei, a luminância da cor igualada é a
soma das luminância dos primários utilizados na igualação. (Em
definitiva, a luminância se soma).
Lx=LA+ LB+ LC
3ª Lei
Sempre que duas superfícies produzam igual sensação
cromática, é possível variar seu luminância, mantendo
constante o matiz e a saturação, sem que varie a igualdade
cromática. Daí que o sistema CIE de especificação da cor não
tenha em conta mais que estes dois parâmetros (matiz e
saturação) e não use o terceiro.
4ª Lei
Se se somarem duas cores quaisquer obtendo-se outra cor
resultante, este poderia haver-se obtido também somando os
primários de cada um das cores origem.
A+ B=C
É equivalente a:
A 1+ A 2+ A 3+ B1+ B 2+ B3=C
Onde: A1, A2, A3 São as cores primárias para obter a cor
A.
B1, B2, B3 São as cores primárias para obter a cor B.
As leis do Grassmann sugerem o uso de um padrão de cores
primárias de maneira que, a partir daqui possam representar-se todas
as cores possíveis. O padrão depende do tipo de luminância que
emitem os fósforos escolhidos para a tela. Um padrão comum é:
Vermelho 700 NM
Verde 546.1 NM
Azul 435.8 NM
Como padrão de intensidades se elegeu de maneira que misturados
estas três cores produzirá o branco equienergético que também pode
obter-se misturando toda a gama espectral com a mesma energia
(espectro constante). Estas intensidades estão relacionadas por:
L R /LG =1/4 . 59 , L R /L B=1/ 0 . 06
A estas intensidades padrões, chamaremo-lás μ rSub { size 8{R} } ,μ rSub { size 8{G} } , μ rSub { size 8{B} } ,
usando a primeira lei do Grassmann temos que, o valor do branco
equienergético vem dado por:
LBlanco =μ R + μG + μ B
Os restantes dores se obtêm por meio de uma combinação das
lumitancias padrões como:
Lc =RμR +Gμ G + BμB
Os monitores VGA manipulam os coeficientes " R", "G", " B" , utilizando
1byte para cada um de maneira que a propriedade da cor vem dada
por uma variável de 4 byte, 3 deles indicam os coeficientes da cor, e
a primeira em sua ordem indica a paleta, este é o formato mas
completo quanto a cores que usam a generalidade dos computadores
atuais. No caso de que os componentes " R", "G", " B" , sejam iguais
obteremos um tom de cinza.
Como cada componente pode tomar um valor entre 0..255 , estes,
junto com a paleta formam um número que expresso em
hexagesimal, para o caso do branco vem dado por:
⏟ FF
00 ⏟⏟ ⏟→
FF FF
B G Branco de maior intensidade.
R
O número inteiro associado a uma cor vem dado por:
N c =R+G⋅256+ B⋅2562
Portanto a quantidade de combinações possíveis na máquina está
entre: 00000000 y 00 FFFFFF ou seja 256 =16777216 de cores, entretanto
3
não terá que entusiasmar-se muito pois a maioria deles o olho
humano não pode diferenciá-los.
Para aumentar ou diminuir a intensidade de uma cor, aumentam-se
ou diminuem os coeficientes R ,G , B de forma proporcional, em
efeito, qualquer cor pode representar-se em forma relativa como:
R G B
Lc ( R G B)( R G B )
( R G B) ( R G B) ( R G B)
Fazendo:
R G B
k =( R+G+ B ) r= g= b=
(R+ G+ B ) ( R+G+ B ) ( R+G+ B )
Temos: Lc =k (rμ R + gμG + bμB ) e
r + g+ b=1
"k " determina o brilho da cor, portanto r , g y b
O coeficiente
terão a informação do tom do mesmo. Se desejamos variar o
brilho da cor podemos variar "k " ao valor k rSub { size 8{1} } obtendo-os novos
componentes:
R1 =k 1 r G 1 =k 1 g B1 =k 1 b
Estes se relacionam com os originais por meio de:
k1 k1 k1
R1 = R G1 = G B 1= B
k k k
A mudança do brilho da cor supõe multiplicar por um fator todos os
componentes, neste caso o tom se mantém. No caso dos
computadores, o valor de k rSub { size 8{1} } não pode ser arbitrário já que os valores
de loas coeficientes não devem superar a 255. Para um tom
determinado, o valor máximo de "k " , se calcula por meio do máximo
valor dos coeficientes que determinam o tom por meio de:
255
k max =
: max (r , g , b )
Portanto, a fila de brilho de uma cor no computador depende do tom
do mesmo, o valor da quantidade de níveis possíveis para cada tom o
dá, precisamente o valor de
k max . O maior valor de brilho permissível o
tem o branco onde:
R=G=B=255 ⇒ k=765
Qualquer cor terá menos brilho relativo, no caso do branco, como dos
diferentes tons de cinzas os coeficientes de tom têm o valor:
r=g=b=0 . 33
Portanto, existem 765 tons de cinzas possível de representar na tela,
claro está não todos eles são possíveis de diferenciar pelo olho
humano. Uma cor se pode fazer menos saturado somando um nível
de cinza à cor original, ou subtraindo se quisermos que tenha maior
saturação, em efeito, se:
Lc =RμR +Gμ G + BμB e Lb =Cμ R + CμG+ CμB
O tom original de L rSub { size 8{c} } pode fazer-se menos saturado (suavizá-lo)
somando com o tom de cinza dado por L rSub { size 8{b} } , obtendo-se:
Lc 1 =Lc +Lb =( R+C )μ R +(G+C )μG +(B+C ) μ B
As novas intensidades e tons ficam agora como:
R+C G+C B+C
Lc 1 =(R+G+B+3 C )( +μ R μG + μ )
( R+G+B+3 C ) ( R+G+B+3 C ) ( R+G+B+3 C ) B
Isto nos mostra que a nova cor tem diferença do tom e do brilho em
relação ao original. O processo de saturação ou dê-saturação de uma
cor está demarcada conforme aos limites que dirige o computador.
As componentes de uma cor possuem certa distribuição espectral, em
efeito para cada longitude de onda λ as componentes de tom
r , g y b têm um valor definido, de tal forma que:
r λ=r ( λ ) g λ=g( λ ) b λ =b( λ )
Se o espectro de potência da cor é P \( λ \) , quer dizer conhecemos a
potência associada a cada uma das longitudes de onda para a cor
dada, então as componentes da cor para este espectro de potência
vem dada pelas relações:
R=∫ r( λ )P( λ )dλ G=∫ g( λ )P ( λ )dλ B=∫ b( λ )P( λ )dλ
Aula Nº 3. Exercícios.
Questões de Estudo:
1. Componentes gráficos.
2. Exercício demonstrativo.
Questão de Estudo Nº 1. Componentes gráficos.
Componentes associados às cores.
O componente gráfico mais elementar é o TColor o qual se usa para
definir as cores a partir de suas componentes R, G, B e a paleta
correspondente, portanto cada cor tem uma dimensão de 3 byte.
O tipo TColor que se define como:
PColor = ^TColor;
TColor = -$7FFFFFFF-1..$7FFFFFFF;
Sendo PColor o ponteiro correspondente à cor, ambos os elementos
são do sistema operacional pelo que sua invocação não depende da
linguagem utilizada
As cores que estão definidos pelo sistema são:
clBlack = TColor($000000);
clMaroon = TColor($000080);
clGreen = TColor($008000);
clOlive = TColor($008080);
clNavy = TColor($800000);
clPurple = TColor($800080);
clTeal = TColor($808000);
clGray = TColor($808080);
clSilver = TColor($C0C0C0);
clRed = TColor($0000FF);
clLime = TColor($00FF00);
clYellow = TColor($00FFFF);
clBlue = TColor($FF0000);
clFuchsia = TColor($FF00FF);
clAqua = TColor($FFFF00);
clLtGray = TColor($C0C0C0);
clDkGray = TColor($808080);
clWhite = TColor($FFFFFF);
clMoneyGreen = TColor($C0DCC0);
clSkyBlue = TColor($F0CAA6);
clCream = TColor($F0FBFF);
clMedGray = TColor($A4A0A0);
clNone = TColor($1FFFFFFF);
clDefault = TColor($20000000);
clUnused = TColor($D4D4D4);
Os nomes precedidos pelo prefixo cl estão definidos como constantes
o sistema pelo que sua invocação é equivalente ao do número
hexagesimal que aparece entre parêntese que dito seja de passagem,
corresponde aos valores das componentes R, G, B da cor.
Outras constantes associadas esta vez aos controles se definem por
meio de uma operação lógica or .Observe-se que as cores associadas
aos controles lhes adiciona $80 o último byte a partir da operação or.
const
clScrollBar = TColor(COLOR_SCROLLBAR or $80000000);
clBackground = TColor(COLOR_BACKGROUND or $80000000);
clActiveCaption = TColor(COLOR_ACTIVECAPTION or $80000000);
clInactiveCaption = TColor(COLOR_INACTIVECAPTION or
$80000000);
clMenu = TColor(COLOR_MENU or $80000000);
clWindow = TColor(COLOR_WINDOW or $80000000);
clWindowFrame = TColor(COLOR_WINDOWFRAME or $80000000);
clMenuText = TColor(COLOR_MENUTEXT or $80000000);
clWindowText = TColor(COLOR_WINDOWTEXT or $80000000);
clCaptionText = TColor(COLOR_CAPTIONTEXT or $80000000);
clActiveBorder = TColor(COLOR_ACTIVEBORDER or $80000000);
clInactiveBorder = TColor(COLOR_INACTIVEBORDER or $80000000);
clAppWorkSpace = TColor(COLOR_APPWORKSPACE or $80000000);
clHighlight = TColor(COLOR_HIGHLIGHT or $80000000);
clHighlightText = TColor(COLOR_HIGHLIGHTTEXT or $80000000);
clBtnFace = TColor(COLOR_BTNFACE or $80000000);
clBtnShadow = TColor(COLOR_BTNSHADOW or $80000000);
clGrayText = TColor(COLOR_GRAYTEXT or $80000000);
clBtnText = TColor(COLOR_BTNTEXT or $80000000);
clInactiveCaptionText = TColor(COLOR_INACTIVECAPTIONTEXT or
$80000000);
clBtnHighlight = TColor(COLOR_BTNHIGHLIGHT or $80000000);
cl3DDkShadow = TColor(COLOR_3DDKSHADOW or $80000000);
cl3DLight = TColor(COLOR_3DLIGHT or $80000000);
clInfoText = TColor(COLOR_INFOTEXT or $80000000);
clInfoBk = TColor(COLOR_INFOBK or $80000000);
clGradientActiveCaption = TColor(COLOR_GRADIENTACTIVECAPTION
or $80000000);
clGradientInactiveCaption =
TColor(COLOR_GRADIENTINACTIVECAPTION or $80000000);
Além disso do tipo Tcolor como formato padrão de 4 byte que possui
o sistema operacional, existem outros formatos de cores que são
muito convenientes no tratamento das imagens, tema este que se
tratará mais adiante, estes tipos são o TRGBTriple e o TRGBQuad
ambos estão definidos como estruturas que contêm as cores
correspondentes.
TRGBTriple=record
rgbtRed, rgbtGreen, rgbtBlue:byte;
end
TRGBQuad =record
rgbRed, rgbGreen, rgbBlue, rgbReserved,:byte;
end
Também estão definidos dentro do sistema os ponteiros
correspondentes a estes tipos como:
pRGBTriple=^ TRGBTriple; y pRGB Quad =^ TRGB Quad;
Adicionalmente se definem os acertos e os ponteiros
correspondentes a estes tipos como:
PRGBTripleArray = ^TRGBTripleArray;
TRGBTripleArray = array [Byte] of TRGBTriple;
PRGBQuadArray = ^TRGBQuadArray;
TRGBQuadArray = array [Byte] of TRGBQuad;
As cores têm algumas funcione associadas de conversão que é
conveniente conhecer tais como:
function ColorToRGB(Color: TColor): Longint;
Esta função devolve um número de 3byte correspondente à cor dada
na variável Cor do tipo Tcolor.
function ColorToString(Color: TColor): string;
Esta função devolve uma Cor do tipo Tcolor a partir de uma cadeia de
caracteres associada.
function StringToColor(const S: string): TColor;
Faz o contrário a anterior.
function ColorToIdent(Color: Longint; var Ident: string):
Boolean;
As funções que permitem achar os componentes R,G,B de uma cor
são:
function GetRValue(Color: TColor ) :byte;
function GetGValue(Color: TColor ) :byte;
function GetBValue(Color: TColor ) :byte;
Por sua parte o processo inverso o faz a função:
function RGB(r,g,b:byte) : TColor;
Com o exposto se estudaram as principais propriedades associadas à
cor, vejamos agora as correspondentes à escritura.
O componente de tipo TPen esta associado de forma geral à escritura,
particularmente a que se realiza sobre elementos gráficos, associados
à componente TCanvas que logo se estudará, por meio do TPen se
especifica a forma e cor da escritura que tem que empregar-se, tudo
em combinação com o tipo de letra dado pelo tipo TFont. Da mesma
forma especifica a maneira de escrever as linhas nos gráficos
correspondentes.
Os estilos associados ao TPen por meio da propriedade TPenStyle são:
TPenStyle = (psSolid, psDash, psDot, psDashDot, psDashDotDot,
psClear,
psInsideFrame);
Observe o prefixo pS (pen style) associados às constantes dos
diferentes estilos do TPen aos quais lhes pode relacionar o acerto
correspondente:
PenStyles: array[TPenStyle] of Word = (PS_SOLID, PS_DASH,
PS_DOT, PS_DASHDOT, PS_DASHDOTDOT, PS_NULL,
PS_INSIDEFRAME);
Além dos estilo do desenho se podem definir os modos alguns dos
quais estão relacionados com operações lógicas que se realizam com
as cores de fundo do lugar onde se realiza o desenho.
TPenMode = (pmBlack, pmWhite, pmNop, pmNot, pmCopy,
pmNotCopy,
pmMergePenNot, pmMaskPenNot, pmMergeNotPen,
pmMaskNotPen, pmMerge,pmNotMerge, pmMask, pmNotMask,
pmXor, pmNotXor);
O vetor correspondente aos modos é:
PenModes: array[TPenMode] of Word =(R2_BLACK, R2_WHITE,
R2_NOP, R2_NOT, R2_COPYPEN, R2_NOTCOPYPEN,
R2_MERGEPENNOT, R2_MASKPENNOT, R2_MERGENOTPEN,
R2_MASKNOTPEN, R2_MERGEPEN, R2_NOTMERGEPEN,R2_MASKPEN,
R2_NOTMASKPEN, R2_XORPEN, R2_NOTXORPEN);
Por último, a propriedade PenPos que é do tipo TPoint especifica o
lugar da tela onde se encontra o ponteiro para desenhar,
esclareçamos que o tipo TPoint, é um record (estrutura) que contém
as coordenadas x,y do ponto.
Associado com o TPen e, particularmente para escrever textos se usa
o tipo TFont. A propriedade pela qual se escolhe o tipo de letra com o
Font é a propriedade name, por exemplo: [Link] := 'Arial';
Indica que se escolha o tipo 'Arial' para escrever, outro elemento
importante da classe TFont é o estilo que fica definido como:
TFontStyle = (fsBold, fsItalic, fsUnderline, fsStrikeOut);
O cheio dos elementos gráficos se realiza com a classe TBrush esta
classe determina o cheio das figuras gráficas, e se caracteriza por sua
propriedade de estilo, definida por:
TBrushStyle = (bsSolid, bsClear, bsHorizontal,
bsVertical,bsFDiagonal,
bsBDiagonal, bsCross, bsDiagCross);
Componentes associados ao desenho.
O elemento associado ao suporte de desenho é esta TCanvas é uma
classe que inclui tanto ao Pen como ao Brush,
Como parte da classe se fará uma exploração de todas as
possibilidades do TCanvas fazendo insistência no desenho de
diferentes formas geométricas, assim como as diferentes forma de
cheio de figuras.
Entretanto, é possível estabelecer alguns dos aspectos mais
relevantes que devem distribuir-se em cada uma das classes. Em
primeiro lugar deve dar uma idéia da forma em que se distribuem os
pixels na tela, assim como o sistema de coordenadas associado às
mesmas como é o caso da figura 3-1.
xP
Sp
yP
Figura 3-1. Sistema de referência da tela.
Os pixels na tela podem localizar-se por meio da seguinte função
associada ao Canvas:
Pixels[x,y] : T Color
Além disso o componente tem um conjunto de propriedades como
são:
Brush, Canvas Orientation, ClipRect, CopyMode, Font, Handle,
LockCount, Pen, PenPos,
TextFlags
Uma lista das possibilidades de desenho com esta classe pode ser a
seguinte, onde se mostram os métodos de desenho principais:
Método Descrição
Arc Desenha um arco com o passar do perímetro de uma
elipse demarcada por um retângulo.
Chord Desenha uma figura fechada que representa a
intercessão de uma linha e uma elipse.
CopyRect Cópia uma parte de uma imagem desde outro canvas
no canvas de tabalho.
Draw Desenha o gráfico do objeto especificado pelo
parâmetro correspondente na localização do canvas dado pelas
coordenadas (X, Y).
Ellipse Desenha a elipse definida pelos limites do retângulo
dado no método.
FillRect Enche o retângulo especificado no canvas usando o brush
previamente definido.
LineTo Desenha uma linha no canvas do PenPos até o ponto
especificado por X e E, and coloca a position do Pen
em (X, Y).
MoveTo Troca a posição do cursor ao ponto (X,Y).
Pé Desenha um pé como seção de uma elipse demarcada
pelo retângulo (X1, Y1) e (X2, Y2) no canvas.
Polygon Desenha uma série de linhas no canvas conectando os
pontos e fazendo uma linha fechada entre o primeiro e último ponto.
Polyline Desenha uma série de linhas no canvas usando o PEN
definido.
Rectangle Desenha um retângulo no canvas com sua esquina
superior esquerda no ponto (X1, Y1) e sua esquina inferior direita em
o ponto (X2, Y2).
RoundRect Desenha um retângulo no canvas com suas esquinas
arredondadas.
TextOut Escreve um texto no canvas começando no ponto (X,Y), E
com isso troca a posição do PenPos ao final da cadeia escrita.
Questão de Estudo Nº 1. Exercício demonstrativo.
O professor demonstra com um ou vários exercícios (em dependência
das características do grupo) a aplicação das funções e componentes
estudados. Um exercício pode ser a demonstração de algumas das
funções do Paint.