Bibliotecas: Easy Canvas - página 15

 
Nikolai Semko #:

Se for literalmente em um objeto retangular, então não.
A tela também é um objeto.
Você só pode "transformar" um objeto de tela em um objeto retangular programando seu conteúdo para se mover e dimensionar.
Visualmente, ele pode se parecer exatamente com um objeto retangular com pequenos quadrados nos cantos para controle. Mas somente alguns programadores desta comunidade poderão implementar isso, inclusive eu.

Se estivermos falando sobre a transformação do conteúdo interno do retângulo. Se estivermos falando de um simples retângulo preenchido ou vazio, qualquer programador pode fazer isso.

Ok, Nikolai, entendi. Muito obrigado!

 
Facundo Laje #:

Ok, Nikolai, entendi. Muito obrigado!

Não tem problema.

A versão mais recente é a 1.47 aqui: https://www.mql5.com/ru/code/22164

Se você estiver interessado nesse tópico, recomendo que veja este tópico em russo com o Google Translate:

https://www.mql5.com/ru/forum/227736

Arquivos anexados:
iCanvas_CB.mqh  57 kb
 

Bom dia, colegas!

Por que o código abaixo não funciona para mim? Por exemplo, eu queria desenhar círculos sobre barras que têm determinadas condições.

void  OnTimer()

 {

    Canvas.Erase(0x00FFFFFF);

      for(int i = 0; i < 100 ; i++)

       {

        if(iClose(_Symbol, PERIOD_CURRENT, i + 1) > iClose(_Symbol, PERIOD_CURRENT, i + 2))

         {

          Canvas.Circle((int)_X(Canvas.Bar(i + 1)), (int)_Y(Canvas.Price(iClose(_Symbol, PERIOD_CURRENT, i + 1))), 5, 0x88ff9999);

         }

       }

  Canvas.Update();

 }


 
Petr Zharuk #:

Boa hora, colegas!

Por que o código abaixo não funciona para mim? Por exemplo, eu queria desenhar círculos sobre barras que têm determinadas condições.

void  OnTimer()

 {

    Canvas.Erase(0x00FFFFFF);

      for(int i = 0; i < 100 ; i++)

       {

        if(iClose(_Symbol, PERIOD_CURRENT, i + 1) > iClose(_Symbol, PERIOD_CURRENT, i + 2))

         {

          Canvas.Circle((int)_X(Canvas.Bar(i + 1)), (int)_Y(Canvas.Price(iClose(_Symbol, PERIOD_CURRENT, i + 1))), 5, 0x88ff9999);

         }

       }

  Canvas.Update();

 }


À primeira vista, vejo apenas um problema. Para a coordenada X, é necessário:
_X(double (i))
A função double Canvas. Bar(int x) retorna o número da barra na coordenada x da janela
 
Petr Zharuk #:

Boa hora, colegas!

Por que o código abaixo não funciona para mim? Por exemplo, eu queria desenhar círculos sobre barras que têm determinadas condições.

void  OnTimer()

 {

    Canvas.Erase(0x00FFFFFF);

      for(int i = 0; i < 100 ; i++)

       {

        if(iClose(_Symbol, PERIOD_CURRENT, i + 1) > iClose(_Symbol, PERIOD_CURRENT, i + 2))

         {

          Canvas.Circle((int)_X(Canvas.Bar(i + 1)), (int)_Y(Canvas.Price(iClose(_Symbol, PERIOD_CURRENT, i + 1))), 5, 0x88ff9999);

         }

       }

  Canvas.Update();

 }

Cheguei ao meu computador:

void  OnTimer()
  {
   Canvas.Erase(0x00FFFFFF);
   for(int i = (int)W.Right_bar; i <= W.Left_bar ; i++)
     {
      if(iClose(_Symbol, _Period, i) > iClose(_Symbol, _Period, i + 1))
        {
         Canvas.FillCircle((int)_X((double)i), (int)_Y(iClose(_Symbol, _Period, i)), 5, 0x88ff9999);
        }
     }
   Canvas.Update();
  }



 
Nikolai Semko #:

chegou ao computador:



Saúde, Nikolai!

Muito obrigado.

 

Existe uma implementação de como colocar o texto com adesão?

Um análogo de Align ou algo do gênero. Ou, pelo menos, uma função que obtenha o tamanho do bloco de texto.

 
Petr Zharuk #:

Existe uma implementação de como colocar o texto com aderência?

Um análogo de Align ou algo do gênero. Ou, pelo menos, uma função que obtenha o tamanho do bloco de texto.

https://www.mql5.com/pt/docs/standardlibrary/canvasgraphics/ccanvas/ccanvastextsize

https://www.mql5.com/pt/docs/standardlibrary/canvasgraphics/ccanvas/ccanvastextout

 

Nicholas, há algum desenvolvimento ou exemplo de interação com elementos de interface escritos no Canvas?

Por exemplo, há dois botões Canvas.Rectangle.

Como verificar se um deles foi clicado, exceto pela opção de verificar as coordenadas do mouse e do botão?

 
Petr Zharuk #:

Nikolay, há algum desenvolvimento ou exemplo de interação com elementos de interface escritos no Canva?

Por exemplo, há dois botões Canvas.Rectangle.

Como verificar se um deles foi clicado, exceto pela opção de verificar as coordenadas do mouse e do botão?

Ainda não