Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Isso se aplica ao modo normal ou ao testador?
Modo normal, Nikolai.
Obrigado!
Essa função não é adequada?
Infelizmente não. Ela move o próprio objeto bitmap, mas preciso de uma função que mova os pontos x do conteúdo. Sei que internamente a memória consiste em uma matriz x, y, mas não há memmove ou algo do gênero no mql. Não sei como mover a memória rapidamente.
Modo normal, Nikolai.
Geralmente, sigo o seguinte esquema:
.
Se não funcionar no MT4, então há algo errado com o evento CHARTEVENT_CHART_CHANGE. Não posso verificar isso agora, pois ainda não há cotações.
Normalmente, faço o seguinte:
Se não funcionar no MT4, então há algo errado com o evento CHARTEVENT_CHART_CHANGE. Não posso verificar isso agora, pois ainda não há cotações.
Nicholas, para que você não perca seu tempo, escrevi acima uma solução que resolveu meu problema, ou seja, como você notou corretamente, o seguinte código inserido em OnCalcucate():
Infelizmente, não. Ele move o próprio objeto bitmap, mas preciso de uma função que mova os pontos x do conteúdo. Sei que internamente a memória consiste em uma matriz x, y, mas não há memmove ou algo do gênero no mql. Não sei como mover a memória rapidamente.
Não entendi, você precisa mover a área retangular dentro de toda a tela?
Nicholas, para que você não perca seu tempo, escrevi acima uma solução que resolveu meu problema, ou seja, como você observou corretamente, o seguinte código inserido em OnCalcucate():
No modo normal de não-teste, você não deve fazer isso, pois a função ChartChanged() será executada duas vezes seguidas, o que não é razoável. Afinal de contas, ela é executada quando o evento CHARTEVENT_CHART_CHANGE ocorre dentro do arquivo iCanvas.mqh.
É correto redesenhar a tela vinculada às barras ou ao tempo em OnChartEvent quando o evento de mudança de janela ( CHARTEVENT_CHART_CHANGE) ocorre sem usar ChartChanged().
Nicholas, para que você não perca seu tempo, escrevi acima uma solução que resolveu meu problema, ou seja, como você observou corretamente, o seguinte código inserido em OnCalcucate():
Você precisa levar em consideração o seguinte:
Seu problema foi porque OnCalculate aparentemente é executado antes de OnChartEvent e, portanto, ChartChanged() ainda não foi processado.
É por isso que é razoável implementar o manipulador de redesenho exatamente em OnChartEvent e não em OnCalculate . Isso deve ser feito especialmente porque o usuário pode alterar o tamanho da janela a qualquer momento. O evento CHARTEVENT_CHART_CHANGE é responsável por tudo isso
Não entendi, você precisa mover a área retangular dentro de toda a tela?
Sim. Exemplo: desenho um círculo no meio da tela cheia e quero mover o círculo para a esquerda, mas não quero excluir toda a área e repintar o círculo a cada movimento, mas simplesmente rolar a memória para a esquerda.
O CCanvas é simplesmente uma matriz x/y de pontos.
Quero dizer uma função que mova os m_pixels para a esquerda, para a direita, para cima e para baixo.
Sim. Exemplo: desenho um círculo no meio da tela cheia e quero mover o círculo para a esquerda, mas não quero excluir toda a área e repintar o círculo a cada movimento, mas simplesmente rolar a memória para a esquerda.
O CCanvas é simplesmente uma matriz x/y de pontos.
Quero dizer uma função que mova os m_pixels para a esquerda, para a direita, para cima e para baixo.
Sim, é um desejo razoável.
Além disso, não é difícil implementá-lo.
Pensei sobre isso, mas cheguei à conclusão de que, se houver necessidade de mover a parte retangular da tela comum, há uma maneira mais fácil de implementá-la:
Sim, é um desejo bastante razoável.
Além disso, não é difícil implementá-lo.
Pensei nisso, mas cheguei à conclusão de que, se houver necessidade de mover a parte retangular da tela geral, há uma maneira mais fácil de implementá-la:
Isso não está funcionando porque meu Canvas é de tela cheia. É como um gráfico de ticks, mas é muito demorado apagar todo o plano de fundo, construir e pintar tudo de novo, então preciso mover o conteúdo para a esquerda (por exemplo, 8 pixels) e desenhar apenas os novos 8 pixels (8 px na direção x e altura total) com novos dados. Tentei mover o Canvas 8 px para a esquerda com MoveCanvas e isso está funcionando, mas não consigo redimensioná-lo de forma que 8 px de largura sejam removidos da esquerda e 8 px sejam adicionados à direita. Espero que você entenda...