Galeria de UIs escritas em MQL - página 48

 
Реter Konow #:

Mas se um pixel tiver uma cor diferente em vez de -1, não é realista separá-lo do restante, e as funções de transparência não ajudarão. O problema é o seguinte.

Estou falando de ícones png com fundo transparente (com canal alfa).

 
Nikolai Semko #:
...

Eu também costumava fazer isso com as sombras. Não faço mais isso.
Moda moderna sem sombras, gradientes e cachos.
Resumindo, minimalismo, que é a favor do desempenho de renderização.


É claro que a moda é diferente, mas se falarmos estritamente sobre renderização, o processamento adicional de sombras de ícones pequenos é apenas a inicialização de 16*16 células de matriz com valores calculados por uma fórmula filha. E assim, para cada ícone na janela, que pode ser contado nos dedos. Dificilmente haverá um atraso de milissegundos na renderização. Outra coisa são os eventos de redesenho das superfícies de telas grandes com muitos elementos. Nesse caso, sem dúvida, os gadgets gráficos ficarão mais lentos. Mas somente no primeiro desenho ou ao mudar a tela inteira. Isso não é sempre, mas apenas em determinados eventos. Em outros casos, simplesmente removemos o recurso salvo da memória e não desenhamos nada.

É assim que funciona...
 
Nikolai Semko #:

Estou falando de ícones png com fundo transparente (com canal alfa).

Portanto, eles não têm transparência propriamente dita. O plano de fundo é marcado com -1. O algoritmo deve simplesmente alterar esse valor para a cor do pixel subjacente na tela de renderização. Ou seja, não há necessidade de misturar cores nesse caso. Mas, para outras finalidades, a função de transparência é muito útil. A propósito, eu a peguei emprestada de um artigo antigo, seguindo seu conselho. No entanto, ainda não a utilizei. Acho que ela pode ser útil...
 
Nikolai Semko #:

...

A propósito, há um problema gráfico que não consegui resolver. É realmente difícil. Tentei resolvê-lo e desisti. Não porque eu não conseguisse, mas porque levava muito tempo. Pesei os prós e os contras e desisti de tentar.

Sei que você é um grande especialista em trabalhar com cores de tela. Não posso deixar de perguntar.

Então, o problema é o seguinte:

Como calcular o gradiente de cor da moldura de um botão simples de forma que ele se harmonize com a cor da superfície do botão e passe suavemente, enfatizando a curva sem alterá-la. Por exemplo, temos um botão amarelo claro. Como colorir corretamente sua moldura de 4 a 5 pixels de espessura? Você precisa ter em mente que a moldura é iluminada de forma diferente de cada lado. Na frente e à esquerda, a moldura é clara, à direita e na parte inferior é escura. Além disso, quanto mais perto da base, mais escura é a moldura. Além disso, há brilho.

Como posso calcular as cores da moldura com base na cor original do botão?


Essa é a pergunta. :)
 

Um exemplo claro:


As bordas do botão não são coloridas. O motivo é que não conseguimos calcular as cores necessárias. O gradiente usual não é adequado. Aqui precisamos de alguma fórmula para calcular a luz, a sombra, o ângulo e a tonalidade da cor. Não tenho competência nessa área.

 
Реter Konow #:
A propósito, há um problema gráfico que não consegui resolver. É um problema realmente difícil. Tentei resolvê-lo e desisti. Não porque eu não conseguisse, mas porque levava muito tempo. Pesei os prós e os contras e desisti de continuar tentando.

Sei que você é um grande especialista em trabalhar com cores de tela. Não posso deixar de perguntar.

Então, aqui está o desafio:

Como calcular o gradiente de cor da moldura de um botão simples de forma que ele se harmonize com a cor da superfície do botão e faça transições suaves, enfatizando a curva sem alterá-la. Por exemplo, temos um botão amarelo claro. Como colorir corretamente sua moldura de 4 a 5 pixels de espessura? Você precisa ter em mente que a moldura é iluminada de forma diferente de cada lado. Da frente e da esquerda, a moldura é clara; da direita e da parte inferior, é escura. Além disso, quanto mais perto da base, mais escura é a moldura. Além disso, há o brilho.

Como posso calcular as cores da moldura com base na cor original do botão?


Aqui está uma pergunta. :)

1. sobre a cor - cores contrastantes, há uma tabela (nesse caso, deve-se obter um tom de azul escuro)

2. sobre as sombras: simule uma lâmpada (um ponto no espaço XYZ, apenas em coordenadas numéricas, sem necessidade de criar eixos) e, a partir dele, as bordas das linhas retas, que marcarão os limites da sombra. nesse caso, o gradiente se estenderá do primeiro limite ao segundo, dependendo da altura do botão, também da geometria.

 
Renat Akhtyamov #:

1. por cor - cores contrastantes, há uma tabela (nesse caso, ela deve ficar em um tom de azul escuro)

2. nas sombras: imite uma lâmpada (ponto) e, a partir dela, as bordas das linhas retas, que marcarão os limites da sombra. nesse caso, o gradiente se estenderá do primeiro limite para o segundo, dependendo da altura do botão, também da geometria.

Você pode fornecer um link para uma função, fórmula ou artigo? Seria útil.
 
Реter Konow #:
Você pode fornecer um link para uma função, fórmula ou artigo? Isso ajudaria.

O Google tem milhões de respostas para tudo

https://www.geeksforgeeks.org/how-to-determine-the-length-of-a-shadow/

https://www.sravni.ru/kursy/info/cvetovoj-krug-ittena/

How to determine the length of a Shadow? - GeeksforGeeks
How to determine the length of a Shadow? - GeeksforGeeks
  • www.geeksforgeeks.org
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
 

Não preciso de milhões de respostas. Preciso de uma resposta certa e, de preferência, imediata).

Caso contrário, não vejo muito sentido em fazer isso. Não é lucrativo.


E a pergunta não era sobre o comprimento da sombra, mas sobre acoloração correta damoldura do botão com a cor do próprio botão.

 
Реter Konow #:

Não preciso de milhões de respostas. Preciso de uma resposta certa e, de preferência, imediata).

Caso contrário, não vejo muito sentido em fazer isso. Não é lucrativo.


E a questão não era o comprimento da sombra, mas acoloração correta damoldura do botão com a cor do próprio botão.

Essa é a sombra.

Se a cor for contrastante, ela será bonita apenas para o usuário, pois o artista ficará entediado.