Vladimir, não sou bom em telas. Aqui está uma pergunta. Há uma tela. Há um rótulo de texto nela. Por que o terminal vê o evento de clicar no rótulo como um evento de clicar na tela? Esse conflito pode ser resolvido de alguma forma?
...
Há uma propriedade para definir a prioridade para isso:
OBJPROP_ZORDER - Prioridade do objeto gráfico para receber o evento de clique do mouse no gráfico (CHARTEVENT_CLICK). Por padrão, o valor é definido como zero durante a criação, mas você pode aumentar a prioridade, se necessário. Quando objetos sobrepostos recebem o evento CHARTEVENT_CLICK, apenas um objeto cuja prioridade é mais alta do que os outros o receberá.
Enviarei o código para você mais tarde. OBJPROP_ZORDER - para kanvas não pode ser definido...
Descobri o que está fazendo com que eu processe incorretamente... Há duas telas, uma sobreposta à outra. E há um rótulo de texto na parte superior. Isso é o que OnChartEvent() não vê.
Enviarei o código para você mais tarde. OBJPROP_ZORDER - para kanvas não pode ser definido...
Descobri o que está fazendo com que eu processe incorretamente... Há duas telas, uma sobreposta à outra. E há um rótulo de texto na parte superior. Isso é o que OnChartEvent() não vê.
Sim, ele pode. É um objeto comum, como OBJ_BITMAP_LABEL ou OBJ_BITMAP.
É possível. É um objeto comum, como OBJ_BITMAP_LABEL ou OBJ_BITMAP.
Certo. Obrigado.
Para fazer isso, você precisa puxar o nome do objeto de gráfico vinculado e dar prioridade a ele.
É assim que funciona (trecho do bloco de inicialização):
//--- criar a 1ª tela if(!myCanvas1.CreateBitmapLabel("My canvas1",_X,_Y,Width,Height,COLOR_FORMAT_ARGB_RAW)) { Print("Error creating base canvas: ",GetLastError()); return INIT_FAILED; } //--- exibição myCanvas1.Erase(XRGB(0x1F,0x1F,0x1F)); myCanvas1.Update(); string obj_name=myCanvas1.ChartObjectName(); if(!ObjectSetInteger(0,obj_name,OBJPROP_ZORDER,0)) return INIT_FAILED;
Oi Vladimir,
Obrigado por este artigo interessante.
Há um pequeno erro em sua tabela 3.
| С'255,0,255' | 0xFF00FF | 1111 1111 0000 0000 1111 1111 | |
| XOR | |||
| C'255,255,255' | 0xFFFFFF | 1111 1111 1111 1111 1111 1111 | Branco (fundo) |
| = | |||
| С'0,255,0' | 0x00FF00 | 1111 1111 1111 0000 0000 0000 | |
| Deveria ser : | 0000 0000 1111 1111 0000 0000 | Verde | |
Oi Vladimir,
Obrigado por este artigo interessante.
Há um pequeno erro em sua tabela 3.
| С'255,0,255' | 0xFF00FF | 1111 1111 0000 0000 1111 1111 | |
| XOR | |||
| C'255,255,255' | 0xFFFFFF | 1111 1111 1111 1111 1111 1111 | Branco (fundo) |
| = | |||
| С'0,255,0' | 0x00FF00 | 1111 1111 1111 0000 0000 0000 | |
| Deveria ser : | 0000 0000 1111 1111 0000 0000 | Verde | |
A pergunta é a seguinte. Qual seria a melhor implementação para mover o kanvas pelo gráfico? Algum tipo de método:
bool CUserCanvas::Move(int _new_x,int _new_y);
A pergunta é a seguinte. Qual seria a melhor implementação para mover o kanvas pelo gráfico? Algum tipo de método:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Estudando a Classe CCanvas. Como Desenhar Objetos Transparentes foi publicado:
Você precisa mais do que os gráficos estranhos de médias móveis? Você quer desenhar algo mais bonito do que um retângulo preenchido simples em seu terminal? Gráficos atraentes podem ser desenhados no terminal. Isso pode ser implementado através da classe CСanvas, que é usada para criar gráficos personalizados. Com esta classe você pode implementar a transparência, misturar cores e produzir uma ilusão de transparência por meio da sobreposição e mistura de cores.
Desenhar no MetaTrader 5 é simples e você precisa saber de apenas algumas nuances. Uma das nuances é de como a tela do terminal é desenhada. Mais precisamente, nós estamos interessados na forma como os gráficos são produzidos na tela. Por exemplo, um gráfico pode ser exibido em primeiro plano ou no fundo. A saída de cores na tela dependerá do visor gráfico. Alguns objetos gráficos podem mudar de cor nas áreas de sobreposição ou de interseção.
Antes de prosseguir diretamente para o desenho usando a classe CCanvas, vamos analisar algumas definições relacionadas com o processamento de cores. Por exemplo, vamos descobrir o significado de Alpha.
Na minha opinião, a implementação da transparência é a tecnologia mais importante, que pode vivificar uma imagem. Por exemplo, a transparência pode ser utilizada para implementar uma interface mais atraente, com uma transição de cor suave ou sombras. A sombra adiciona o conceito de dimensão de um objeto gráfico e suaviza visualmente as bordas do objeto.
5. A Ilusão da Transparência
Agora nós podemos proceder para a aplicação prática da transparência.
Vamos desenhar uma série de retângulos preenchidos (script "xor.mq5"). Para ilustrar a diferença dos métodos de processamento de cor, vamos aplicar três telas horizontais não sobrepostas no topo da tabela.
O primeiro é processado usando COLOR_FORMAT_XRGB_NOALPHA, o segundo - COLOR_FORMAT_ARGB_RAW e o terceiro - COLOR_FORMAT_ARGB_NORMALIZE. Em seguida, gradualmente alteramos a transparência de 255 (totalmente opaco) a 0 (totalmente transparente). Vamos chamar nosso script de "Illusion.mq5".
O vídeo mostra como o script "Illusion.mq5" funciona:
Fig. 11. Funcionamento do script illusion.mq5
Autor: Karputov Vladimir