A lona é legal! - página 2

 
fxsaber:

CCanvas é um invólucro para ResourceCreate. Assim, por exemplo, você tem 20 imagens prontas sob a forma de matrizes. Se você quiser mudá-los através de lona, você precisará fazer caro o ArrayCopy+Update.

E se você fizer isso sem CCanvas, você precisará apenas de ResourceCreate+ChartRerdraw. Coloquei vários trabalhos de desenho dinâmico na kodobase. Era óbvio ali que o CCanvas não prestava.

Concordo que é um invólucro de recursos. Precisamos nos conformar com as definições. A tela, como eu a entendo, não é uma classe CCanvas, mas um recurso gráfico retangular, ou seja, um conjunto de pontos. O que eu preciso da classe CCanvas é de algumas funções para criar, atualizar e excluir. É implementado de forma bastante inteligente, eu vejo as outras funções como inúteis devido à implementação do pixel (não amortecido). Também estou interessado em kanvas como um gráfico vetorial, não como um bitmap, ou seja, quando eu mesmo formo a imagem, em vez de baixar imagens. Portanto, não vejo nenhum uso prático para 20 fotos prontas e não posso usá-lo como um reprodutor de vídeo com MT5. O objetivo dos gráficos vetoriais é renderizar uma imagem em menos de 30 (ou, melhor, em menos de 10) milissegundos. Já que o olho humano não verá a imagem mudar mais de 30 vezes por segundo de qualquer maneira. Basicamente, a kanvas em MT5 lida bem com esta tarefa. É verdade que esses redemoinhos coloridos estão no limite (ou seja, uma moldura é formada em cerca de 30 milissegundos no meu laptop médio), mas no MT4 já está diminuindo a velocidade.

Agora estou fazendo uma classe CCanvasPro como o tempo permite, na qual quero tornar as coisas um pouco melhores.
Eis o que tenho até agora com os círculos (suavizados com sombras). Desculpe, eu ainda não abri o código. Devido à quantidade insuficiente de espaço livre.

Este também é um roteiro.

Arquivos anexados:
 
Evgeniy Zhdan:
Gráfico de arco-íris frio! Eu também gostaria de fazer as velas dançarem à música e girarem entre si!

Irá aumentar os lucros?) Um bônus para cada dança, então eu estou dentro))))

 
Nikolai Semko:

É claro que ajudará, mas haverá uma frenagem terrível.

Haverá uma leve desaceleração, mas nenhuma frenagem horrível. Pelo menos visualmente, nada mudou.


 
Rashid Umarov:

Haverá uma leve desaceleração, mas nenhuma frenagem horrível. Pelo menos visualmente, nada mudou.


Claro, fui um pouco duro. Mas ainda assim, será cerca de 10% mais lento do que o desempenho geral.

 
Rashid Umarov:

Haverá uma leve desaceleração, mas nenhuma frenagem horrível. Pelo menos visualmente, nada mudou.


Verificado não no perfil, mas com aGetMicrosecondCount

O resultado foi uma desaceleração de 3-4% a 1000 quadros. Em princípio, sim, não muito crítico.

while(!IsStopped())
     {
      static ulong t0=GetMicrosecondCount();
      int pos=int(i%size);
      if(pos==0)
        {
         C.Update();
         //Sleep(30);
         X1= Width-(sin((double)j/100)*(double)Width);
         Y1= Height-(cos((double)j/140)*(double)Height);
         X2= Width+(cos((double)j/80)*(double)Width);
         Y2= Height+(sin((double)j/20)*(double)Height);
         if (j==101000) Print(GetMicrosecondCount()-t0);
         j++;
        }
      int X=pos%Width;
      int Y=int(pos/Width);
      double d= ((X1-X)*(X1-X)+(Y1-Y)*(Y1-Y))/(((X1-X)*(X1-X)+(Y1-Y)*(Y1-Y))+((X2-X)*(X2-X)+(Y2-Y)*(Y2-Y)));
      //C.m_pixels[pos]=XRGB(h[int(d*11520)],h[int(d*17920)],h[int(d*6400)]);
      C.PixelSet(X,Y,XRGB(h[int(d*11520)],h[int(d*17920)],h[int(d*6400)]));
      i++;
     }


 
Nikolai Semko:

Eu me propus uma tarefa: demonstrar as capacidades dos gráficos personalizados através da classe CCanvas em um código curto.

Eis o que resultou disso.

Este script funciona tanto na MQL5 quanto na MQL4. Mas é muito mais rápido no MT5.

Cada quadro é único e não se repete, ou seja, o roteiro não é cíclico.


Você deve mover o array m_pixels[] de protegidos: para o público em Canvas.mqh antes de compilar:

meia hora de observação, esperando que esta coisa decole ))

 
Alexey Volchanskiy:

meia hora de observação, esperando que esta coisa decole ))

:))
 

Francamente, eu não entendo qual é o objetivo.

Sim, bonito, colorido, iridescente... Mas como isso afetará o trabalho do especialista?

Eu entenderia, se estivéssemos aqui para escrever o jogo - é aí que tal oportunidade, oh, como seria exigida... Mas aqui...

Na minha opinião, é necessário exatamente o contrário - livrar-se de quaisquer ações desnecessárias, para que o código resultante carregue o sistema o mínimo possível (exigiria dinheiro na nuvem). E também deve ser mais fácil de manter.

A menos que - "uau-efeito" para os clientes... Acho que é verdade, uma produção bem desenhada permite ganhar mais dinheiro em Freelance...

 
Muito legal, obrigado, agora o comércio vai ser muito mais brilhante, literalmente.
 
George Merts:

Francamente, eu não entendo qual é o objetivo.

Sim, bonito, colorido, iridescente... Mas como isso afetará o trabalho do especialista?

Eu entenderia, se estivéssemos aqui para escrever o jogo - é aí que tal oportunidade, oh, como seria exigida... Mas aqui...

Na minha opinião, é necessário exatamente o contrário - livrar-se de quaisquer ações desnecessárias, para que o código resultante carregue o sistema o mínimo possível (exigiria dinheiro na nuvem). E também deve ser mais fácil de manter.

A menos que - "uau-efeito" para os clientes... É verdade que uma produção bem desenhada lhe permite ganhar mais dinheiro em Freelance.

Pode vir a ser útil para indicadores. Havia diferentes indicadores de seta desenhados aqui na Tela, havia até mesmo um artigo.

Razão: