A lona é legal! - página 43

 
khorosh:

Por que você faria isso, você escreveu que não precisava de nenhum horário).

Para a beleza.
 
Реter Konow:

Obrigado. Não é uma estrutura de força bruta .bmp comprimida com o comando #resource, pois não? ))) Definitivamente, não. É um adaptador natural para reproduzir um arquivo gif em tela MQL, baseado em um .gif-reader portado, escrito em algumas horas. Devo parecer um idiota de fora))))

Yuri, obrigado pela demonstração, mas qualquer um pode fazer uma coisa dessas. Fácil.

  1. Pegue um gif simples. Grave-o em vídeo.
  2. Obtenha todos os seus quadros a partir do vídeo.
  3. Salvar quadros em formato .bmp, numerados.

  4. Integrar molduras ao roteiro via #resource.

  5. Passe pelas armações e exiba-as uma a uma sobre a tela em loop infinito.

Como resultado, obtemos um pseudo-gif que não tem nenhuma relação com a representação padrão em formato gif nos programas MQL.

//-----------------------------

Adicionado:

Direi que também tenho um "pseudo-gif", mas a tecnologia é muito mais complexa. Possui compressão de autor e um mecanismo de reprodução. E o mais importante, os "pseudo-gifs" estão ligados a seus elementos e são reproduzidos a partir de uma matriz comum. A compressão funciona melhor do que através da diretiva #resource porque as cores imutáveis não são registradas de moldura para moldura.


Que tipo de editor de vídeo não consegue abrir gifs animados? O Photoshop as abre e coloca os quadros em camadas. Mas há uma solução ainda mais fácil - serviço online - carregar gifs animados lá, em um minuto você recebe uma pasta zipada com as molduras individuais.

 
De que adianta discutir se a solução é uma solução portada ou não? O formato é padrão, portanto a forma de trabalhar com ele deve ser padrão e, a propósito, desenvolvido ao mesmo tempo que o desenvolvimento do próprio formato.
 
Arquivos anexados:
puh.ex5  29 kb
 
Yury Kulikov:

 

Saudações.

Alguém sabe por que você não consegue desenhar uma linha de 2 pixels? Que tipo de discriminação é esta? )

void CCanvas::PolylineThick(const int &x[],const int &y[],const uint clr,const int size,const uint style,ENUM_LINE_END end_style)
  {
   if(size<=2)
     {
      if(size>0)
         PolylineWu(x,y,clr,style);
      return;
     }
...
 
Grosso significa "espesso" e 2 pixels não é nada espesso.
 
Dmitry Fedoseev:
Grosso significa "espesso" e 2 pixels não é nada espesso.
Mais espesso do que 1 pixel )
 
Oleksii Chepurnyi:

Saudações.

Talvez alguém saiba por que você não consegue traçar uma linha com 2 pixels? Que tipo de discriminação é esta? )

Sim, e se você substitui-lo por if(tamanho<2), ele desenha, mas de forma imprecisa:


@Nikolai Semko, há algum problema com a suavização?

 
Andrey Khatimlianskii:

@Nikolai Semko, há algum problema com o anti-aliasing aqui?

estas funções estão terrivelmente mal escritas. Há muita coisa para se pôr em dia. Sem serrilhamento normal, sem manipulação normal de mistura de cores e transparência. Você deve apenas amassá-los e jogá-los no lixo, e escrever novos.
Eu já escrevi sobre isso aqui antes.

Em qualquer caso, você deve definitivamente substituir a função regular da PixelTransform por esta:

https://www.mql5.com/ru/forum/1111/page2553#comment_13054823

Comecei a escrever minha versão dupla (onde todos os parâmetros de entrada são duplos), mas não a terminei e a coloquei na prateleira. Não é uma tarefa muito simples, apesar de sua aparente simplicidade. Bem, não é um problema escrevê-lo com precisão, o problema é escrever com uma qualidade muito alta, para que o algoritmo seja rápido. Meu principal problema é o perfeccionismo.