Bibliotecas: Easy Canvas - página 6

 
Алексей Тарабанов:

As causas da intermitência foram identificadas?

Que piscadas?

Não estou piscando.

 
Sim, eu não sei.
 
Nikolai Semko:

O que é piscar?

Não estou piscando.

Acho que é a linha 349, recriar tela, que está comentada agora
 

Testei a biblioteca - conveniente e funcional!

Duas perguntas:

1. existe uma implementação pronta de um segmento que termina com uma seta? (há exemplos em C++ http://www.cyberforum.ru/qt/thread1534114.html e não é um problema portar, mas talvez haja uma implementação pronta e eu não a tenha encontrado ;) )

2. a alteração do gráfico apenas limpa toda a tela? - Se sim, é muito inconveniente; se não, ainda não descobri, preciso de um exemplo

 
Oleksii Chepurnyi:
Acho que é a linha 349, recriar tela, que agora está comentada

Corrigi isso quando descobri que estava causando um congelamento. Mas não estava piscando, apenas o iCanvas parou de funcionar.

 
Nova versão 1.35.
Corrigido um pequeno erro na versão 1.34 que fazia com que o exemplo do seno não funcionasse.
 
Igor Makanu:

Testei a biblioteca - conveniente e funcional!

duas perguntas:

1. existe uma implementação pronta de um segmento que termina com uma seta? (há exemplos em C++ http://www.cyberforum.ru/qt/thread1534114.html e não é um problema portar, mas talvez haja uma implementação pronta e eu não a tenha encontrado ;) )

2. a alteração do gráfico apenas limpa toda a tela? - Se sim, é muito inconveniente; se não, ainda não descobri, preciso de um exemplo

Obrigado, Igor.

1. Não, ainda não o implementei. Com linhas não suavizadas, é muito fácil fazer isso. Há muitas coisas que ainda não implementei e muitas coisas que ainda não publiquei.

2. Não, é claro que não. Por que fazer isso. Em meus programas, quando altero o gráfico, forço o redesenho de tudo quando as coordenadas estão vinculadas ao tempo e ao preço, e não aos pixels da tela. Como poderia ser diferente quando o preço e o tempo mudam as coordenadas? .....

Na verdade, a principal vantagem dessa biblioteca é sua velocidade.
Se você tentar fazer tudo o que faço no iCanvas no CCanvas, a velocidade cairá significativamente.
O principal motivo é que você terá de usar funções assíncronas extremamente lentas, como ChartXYToTimePrice(), que leva cerca de 5.000 microssegundos. Esse é um tempo incrivelmente longo.

O principal objetivo do iCanvas era apenas fugir dessas funções muito caras.

https://www.mql5.com/ru/forum/1111/page2099#comment_6310826

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.01.06
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

Observe que é melhor não usar a função Line (Linha) no CCanvas quando as coordenadas de dois pontos forem formadas de forma não garantida na tela. Há um erro grave nesse caso.

#include <Canvas\iCanvas.mqh> //https://www.mql5.com/pt/code/22164

void OnStart() {
   Canvas.Erase();
   ulong t=GetMicrosecondCount();
   Canvas.LineD(-2000000000.0,-2000000000.0,800.0,800.0,0xFF0000FF);
   t=GetMicrosecondCount()-t;
   Print("O tempo de execução do LineD é " + string(t)+" microssegundos.");
   Canvas.Update();

   t=GetMicrosecondCount();
   Canvas.Line(-2000000000,-2000000000,800,800,0xFFFF0000);
   t=GetMicrosecondCount()-t;
   Print("Tempo de execução da linha - " + string(t)+" microssegundos.");
   Canvas.Update();
   Sleep(3000);
}

resultado da execução:

2020.02.07 19:08:28.030 TestLine (EURUSD,M1)    Время выполнения LineD - 4       микросекунд
2020.02.07 19:08:29.381 TestLine (EURUSD,M1)    Время выполнения Line  - 1349411 микросекунд
 
3D Moving Average
3D Moving Average
  • www.mql5.com
CSetFileReader Class to provide simple reading mechanism from MetaTrader set files. Trade Copier - Open Source - Multiplatform - Transmitter Side Trade Transmitter will Transmit Trades from MT5 Demo or Real accounts using CSV Files. Each trade request created manually or by other EAs on MT5 terminal will be...
Arquivos anexados:
iCanvas.mqh  45 kb
 
Nikolai Semko:

Corrigi isso quando descobri que havia um congelamento por causa disso. Mas não estava piscando, apenas o iCanvas parou de funcionar.

Talvez fosse diferente em situações diferentes.) Eu estava recriando a tela e ela parecia estar piscando. Eu queria prestar atenção nessa linha, mas não tive tempo.)