A lona é legal! - página 88

 
Vitaliy Kuznetsov #:

Também notei um erro

Esta imagem causou um erro. Ela é definitivamente um PNG, mas não tem DPI nos dados

//Algumas delas também não têm dados de DPI, mas funcionam.

Como já escrevi, o algoritmo de descompressão de PNG não foi desenvolvido por mim, sou o Zorro, há 7 anos. Para ser mais preciso, ele deve tê-lo portado de algum código C++. Além disso, esse código sempre dava um erro, e eu simplesmente ignorava esse erro e a descompressão funcionava. É por isso que pode haver algumas junções. Eu não entendi a especificação do formato PNG e suas versões. Talvez você precise se aprofundar nesse formato ou no formato jpg com mais detalhes.

Especialmente esse arquivo png está torto, com quadrados sem transparência, com máscara de cor de 8 bits em vez de 24 bits.

 
Renat Akhtyamov definir indicadores....

como este

Suponho que isso será bem aceito no mercado.

É por isso que criei um exemplo com análise e dimensionamento de ícones em um fundo transparente.


 
Nikolai Semko #:

Como já escrevi, o algoritmo de descompressão de PNG não foi desenvolvido por mim, mas pelo Zorro há 7 anos. Para ser mais preciso, ele deve tê-lo portado de algum código C++. Além disso, esse código sempre dava um erro, e eu simplesmente ignorava esse erro e a descompressão funcionava. É por isso que pode haver algumas junções. Eu não entendi a especificação do formato PNG e suas versões. Talvez você precise se aprofundar nesse formato ou no formato jpg com mais detalhes.

Especialmente esse arquivo png está torto, com quadrados sem transparência, com máscara de cor de 8 bits em vez de 24 bits.

Nikolai Semko #:

Eu tentei. Notei os quadrados somente no caso de redimensionamento. É por isso que meu algoritmo de redimensionamento provavelmente não é perfeito. Já escrevi uma vez que esse algoritmo foi criado na hora, literalmente em meio dia, há muito tempo. Agora eu faria esse algoritmo de forma bem diferente. Mas, infelizmente, ainda não tenho tempo.

Eu mesmo sei que escrever um código para mais de 3 é um dia e para mais de 5 é um mês. E se o projeto for grande, os prazos podem ser ainda maiores.

Sobre o que temos, obrigado. Isso é suficiente por enquanto.

 

Existe alguma maneira no Kanvas de preencher a tela com um gradiente circular a partir do centro?

Havia um exemplo de um gradiente vertical aqui - https://www.mql5.com/ru/code/31689

 
Vitaliy Kuznetsov #:

O canvas tem uma maneira de preencher a tela com um gradiente circular a partir do centro?

Havia um exemplo de um gradiente vertical aqui - https://www.mql5.com/ru/code/31689

É fácil fazer isso.
Você só precisa de uma fórmula:

R2 = X2+Y2

Acho que até dei a função

 
Vitaliy Kuznetsov #:

O canvas tem uma maneira de preencher a tela com um gradiente circular a partir do centro?

Havia um exemplo de um gradiente vertical aqui - https://www.mql5.com/ru/code/31689

você pode usar essa opção:

void iCanvas::RadiusGrad(double x, double y, double r, uint clr_center, uint clr_end){
   int x_left = Floor(x-r);
   int x_right = Ceil(x+r);
   int y_top = Floor(y-r);
   int y_bottom = Ceil(y+r);
   double r2=r*r;
   if (x_left<0) x_left = 0;
   if (x_left>=m_width) return;
   if (x_right>m_width) x_right = m_width;
   if (x_right<0) return;
   
   if (y_top<0) y_top = 0;
   if (y_top>=m_height) return;
   if (y_bottom>m_height) y_bottom = m_height;
   if (y_bottom<0) return;
   
   argb c1,c2, c;
   c1.clr =clr_center;
   c2.clr =clr_end;
   
   for(int i_y=y_top;i_y<y_bottom;i_y++) {
      for(int i_x=x_left;i_x<x_right;i_x++) {
         int adr = i_y*m_width+i_x;
         double r1 = (i_x-x)*(i_x-x)+(i_y-y)*(i_y-y);
         if (r1<=r2) {
            double k = sqrt(r1)/r;
            for (int i=0;i<4;i++) c.c[i] = uchar(c1.c[i] + k*((int)c2.c[i]-c1.c[i]));
            MixColor(c.clr,m_pixels[adr]);
         }
      }
   }
}
o gradiente também passa pelo canal alfa (transparência)
Arquivos anexados:
 
Nikolai Semko #:

você pode usar essa opção:

o gradiente também se aplica ao canal alfa (transparência)

Obrigado, vou tentar.

 

Nikolai, olá!

Uma vez eu pedi que você criasse controles deslizantes para facilitar a escolha do período de visualização do gráfico

Eu quis dizer isso:


muito conveniente!
 
Renat Akhtyamov #:

Nikolai, olá!

Uma vez eu pedi que você criasse controles deslizantes para facilitar a escolha do período de visualização do gráfico

Eu quis dizer isso:


muito conveniente!
Em primeiro lugar, isso não é muito conveniente (IMHO).
Em segundo lugar, essas realizações são demoradas
 
Nikolai Semko #:
Em primeiro lugar, não é muito conveniente (IMHO)
O fato é que, ao implementar algo assim, você inevitavelmente enfrentará uma falta catastrófica de comprimento do controle deslizante.
Como regra, isso é implementado em um único controle deslizante, e não em um, cuja largura pode ser alterada arrastando o botão pelas bordas, alterando assim a escala. Mas essa abordagem não resolve o problema do comprimento do controle deslizante, embora seja mais conveniente.