Fazendo um projeto de crowdsourced em Tela - página 31

 
Реter Konow:
Parafraseando: Você terminará com uma EA com uma interface, mesmo que uma parte seja feita por mim e a outra parte seja com você. Isto não impedirá que você coloque as duas partes juntas em um único EA.
Embora, você possa seguir um caminho diferente. Eu publicarei o construtor, e você, com minha ajuda, projetará a arte que você precisa. Então você imprimirá o núcleo e o inserirá no motor, que você conectará ao Expert Advisor. Isto é ainda melhor, porque imediatamente você aprenderá a escrever gráficos na linguagem de marcação e poderá corrigi-los você mesmo.
 
De qualquer forma, é o que faremos. Eu publicarei o construtor e ensinarei como projetar o engano aqui. Ainda não há documentação, portanto, se você estiver interessado, fique atento para o tutorial.

O treinamento incluirá os seguintes tópicos:

1. Criando uma guia funcional.
2. Estilo.
3. Imprimir e ligar o kernel e o arquivo do motor na aplicação (muito simples - como um em linha).
4. Conexão de elementos gui à aplicação através da funcionalidade API (o arquivo API é criado automaticamente).

Aguarde a publicação neste tópico.
 
Реter Konow:
De qualquer forma, é o que faremos. Eu publicarei o construtor e ensinarei como projetar sobre ele aqui gui. Ainda não há documentação, portanto, se você estiver interessado, fique de olho no tutorial.

O treinamento incluirá os seguintes tópicos:

1. Criando uma guia funcional.
2. Desenho dos estilos.
3. Imprimir e conectar o kernel e o arquivo do motor à aplicação (muito simples - como um inline).
4. Conexão de elementos gui à aplicação através da funcionalidade API (o arquivo API é criado automaticamente).

Aguarde publicação neste ramo.

Copie isso!

 
---:

Eu não gravei o vídeo, mas estou lhe enviando um exemplo.

há 600 listas suspensas.

Mova o mouse - com cada evento e mudança de cor o CCanvas em geral é redesenhado.

Você pode ver o tamanho final nas propriedades do bitmap - 1500x600 px (comparado ao seu atraso de 800x500 e 250ms). O que equivale a 900.000 pixels, e todos são redesenhados instantaneamente. Nenhum segundo está fora de questão.

Cada lista é apresentada primeiro em sua própria tela em seu próprio tamanho (para não transbordar) e, em seguida, arada sobre o conjunto. Portanto, temos 600 chamadas ResourceCreate por evento do mouse.
Isto significa, como você pode ver pela velocidade de reação, que os quadros são suficientes para mostrar os desenhos animados.

Os desenvolvedores de MT deram uma ferramenta satisfatória sem atrasos (quero dizer ResourceCreate bitmaps)

É possível ver este exemplo em código aberto?

 
Алексей Барбашин:

É triste que o projeto tenha entrado em modo fechado (

Não foi a lugar algum.

 
Алексей Барбашин:

É possível ver este exemplo em código aberto?

O que você não entende de kanvas?

1. reage a eventos como todos os outros objetos gráficos. Ou seja, você pode rastrear as coordenadas do mouse enquanto ele se move, reagir aos eventos de clique do mouse e do teclado.

2. Pode mudar independentemente a cor de cada pixel.

O que mais você precisa? E então você precisa de alguns cérebros e vontade de perder muito tempo inutilmente.

 
Hi.
 
Dmitry Fedoseev:

O que você não entende sobre trabalhar com um kanvas?

1. reage a eventos como todos os outros objetos gráficos. Ou seja, você pode rastrear as coordenadas do mouse enquanto ele se move, reagir aos eventos de clique do mouse e do teclado.

2. Pode mudar independentemente a cor de cada pixel.

O que mais você precisa? A próxima coisa que você precisa é um pouco de cérebro e um desejo de perder muito tempo.

O próprio kanvas não reage aos eventos. E o fato de que você pode mudar cada pixel é claro.

Estava interessado na implementação de um redesenho fragmentado da tela.

Mas parece que muitos se acomodaram à repintura total da tela, mesmo que ela só precise ser redesenhada em uma pequena parte, ou seja, um único controle.

 
Алексей Барбашин:

Bem, o próprio kanvas não responde aos eventos. E o fato de que você pode mudar cada pixel é claro.

Eu estava interessado na implementação de um redesenho fragmentado da tela.

Mas parece que muitos se acomodaram à repintura total da tela, mesmo que ela precise apenas repintar uma pequena parte, ou seja, um controle.

A tela em si não reage aos eventos, mas ela não existe por si só.

Redesenho fragmentado - vale a pena começar a fazer e ficará mais claro se houver tal objetivo. Acho que deveria haver um conjunto de controles, cada controle tem limites definidos. Quando você precisa redesenhar um controle, você tem que passar por todos os controles, ver o que mais cai nesta área e apenas redesenhá-los. Pelo menos assim.

 
Dmitry Fedoseev:

O kanvas em si não é reativo, mas não existe por si só.

Redesenho fragmentado - vale a pena começar a fazer e ficará mais claro se houver tal objetivo. Acho que deveria haver um conjunto de controles, cada controle tem limites definidos. Quando você precisa redesenhar um controle, você tem que passar por todos os controles, ver o que mais cai nesta área e apenas redesenhá-los. Pelo menos desta forma.

Foi exatamente assim que eu o construí. Basicamente tomei como base a biblioteca padrão, porque ela tem trabalhado muito bem momentos de transferência de eventos e algumas outras coisas. Anatoly cria agrupamento para cada classe diferente de elementos, enquanto em um padrão tudo é reduzido a um objeto básico.

Como resultado, o WndObject contém a descrição completa das propriedades mais comuns de qualquer controle (tamanho, localização, cor do fundo, cor da borda, espessura da borda, texto, imagem e assim por diante). Além disso, a mesma classe contém uma referência ao controle dos pais. Isto é, se nenhum pai é especificado para o controle, então ele cria seu próprio objeto kanvas no gráfico, caso contrário ele é desenhado no kanvas do pai. Dependendo de sua posição (autônomo, escravo), as coordenadas da localização do item também são calculadas. Além disso, o mesmo objeto tem uma matriz que contém a descrição original da área de origem ocupada pelo item. A idéia em si é a seguinte: se apenas o elemento em si muda, então antes de ser redesenhado, a área do pixel é preenchida com a matriz de pixels pai, e somente então o novo estado do controle é aplicado. esta abordagem não requer a repintura de toda a tela toda vez, pois a repintura está contornando todos os elementos da matriz, e recursivamente com os elementos aninhados. Para renderizar e atualizar um controle em particular, sugerimos duas funções: uma que desenha sobre o pai (ou sobre uma tela em branco) ao criar todo o controle, e outra que atualiza a exibição apenas do controle dado. Portanto, é assim.

Ainda "perdido" no modelo do evento: após o qual muda quais camadas precisam ser redesenhadas.

Nikolai em seus exemplos mostra que, em princípio, não é necessário se preocupar em armazenar dados de áreas locais porque a repintura de toda a tela funciona tão rapidamente que não há necessidade de descer aos detalhes, basta sempre repintar tudo de uma só vez.
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.