Библиотеки: Easy Canvas - страница 15

 
Nikolai Semko #:

Если буквально на прямоугольном объекте, то нет.
Холст - это тоже объект.
Вы можете "превратить" объект холста в прямоугольный объект, только запрограммировав его содержимое на перемещение и масштабирование.
Визуально он может выглядеть как прямоугольный объект с маленькими квадратиками по углам для управления им. Но только несколько программистов в этом сообществе смогут реализовать это, включая меня.

Если мы говорим о преобразовании внутреннего содержимого прямоугольника. Если мы говорим о простом заполненном или пустом прямоугольнике, то это может сделать любой программист.

Хорошо Николай, понял. Спасибо большое!

 
Facundo Laje #:

Хорошо, Николай, понял. Спасибо большое!

Никаких проблем.

Последняя версия 1.47 здесь: https://www.mql5.com/ru/code/22164.

Если вам интересна эта тема, рекомендую посмотреть эту русскоязычную тему с помощью Google Translate:

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

Файлы:
iCanvas_CB.mqh  57 kb
 

Доброго времени, коллеги!

А чего у меня не работает код ниже? Для примера хотел нарисовать кружки над барами у которых определенные условия. 

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 #:

Доброго времени, коллеги!

А чего у меня не работает код ниже? Для примера хотел нарисовать кружки над барами у которых определенные условия. 

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();

 }


На первый взгляд вижу пока одну проблему. Для координаты X необходимо:
_X(double (i))
Фукциия double Canvas. Bar(int x) возвращает номер бара по координате x окна 
 
Petr Zharuk #:

Доброго времени, коллеги!

А чего у меня не работает код ниже? Для примера хотел нарисовать кружки над барами у которых определенные условия.

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();

 }

добрался до компьютера:

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 #:

добрался до компьютера:



Ваше здоровье Николай!

Благодарю.

 

Есть реализация как размещать текст с прилеганием? 

Аналог Align какой нибудь. Или хотябы функцию которая получает размер блока текста.

 
Petr Zharuk #:

Есть реализация как размещать текст с прилеганием? 

Аналог Align какой нибудь. Или хотябы функцию которая получает размер блока текста.

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

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

 

Николай, а есть наработки или примеры взаимодействия с элементами интерфейса написанного на Канве?

Например есть две кнопки Canvas.Rectangle. 

Как проверять нажатие на одну из них кроме варианта сверки координат мыши и кнопок?

 
Petr Zharuk #:

Николай, а есть наработки или примеры взаимодействия с элементами интерфейса написанного на Канве?

Например есть две кнопки Canvas.Rectangle. 

Как проверять нажатие на одну из них кроме варианта сверки координат мыши и кнопок?

Пока нет