Делаем краудсорсовый проект по Canvas - страница 20

 

Сравнил эти формулы, действительно разный результат. За одно сравнил скорости.

Левая половина сделана из трех слоев разного цвета, везде прозрачность 128. Цвета смешивает терминал.

Правая верхняя сделана в одном слое, смешивалось по английской вики.

Правая нижняя в одном слое, по русской вики.


Сравнение терминала и английской вики по скрину (терминал сверху)


Сравнение формул по ресурсам сохраненным в файл (английская сверху)


Много времени занимает создание ресурса, в сравнении с расчетом цвета и заполнением массива до 10 раз, наверно и нет смысла разбираться с OCL.

ПС Вроде неплохо, можно фотошоп в МТ забабахать :)

Файлы:
script.mq5  4 kb
 
Люди разбирающиеся в классе CCanvas скажите, а есть ли там возможность создать градиент? Например, для прямоугольника, чтобы превратить его в кнопку?  Давно хотел это спросить.)
 
Реter Konow:
Люди разбирающиеся в классе CCanvas скажите, а есть ли там возможность создать градиент? Например, для прямоугольника, чтобы превратить его в кнопку?  Давно хотел это спросить.)
Есть.
 
Artyom Trishkin:
Есть.

А есть ли примеры кнопок нарисованных с помощью канваса? Не припомню, чтобы их видел. Видел очень крутые кнопки, но они были на основе исходных картинок, а полностью нарисованных на канвасе не видел...
 
Реter Konow:

А есть ли примеры кнопок нарисованных с помощью канаваса? Не припомню, чтобы их видел. Видел очень крутые кнопки, но они были на основе исходных картинок, а полностью нарисованную на канвасе не видел...
У Анатолия почитайте в описании его граф. библиотеки - про информационныне элементы, если мне память не изменяет.
 
Artyom Trishkin:
У Анатолия почитайте в описании его граф. библиотеки - про информационныне элементы, если мне память не изменяет.

Попробую найти...
 
Нашел. В элементе подсказка используется градиент. Правда не понял можно ли задавать каждой линии градиента свой цвет и прозрачность. Надо будет проштудировать канвас на досуге. Любопытно...
 
Реter Konow:
Люди разбирающиеся в классе CCanvas скажите, а есть ли там возможность создать градиент? Например, для прямоугольника, чтобы превратить его в кнопку?  Давно хотел это спросить.)
Привет, Петр!
Не вижу проблем с градиентом.
Вот простой наглядный пример скрипта, который перебирает все цвета и рисует в динамике меняющийся градиентный цветной квадрат. 
Только, чтобы работал, нужно в Canvas.mqh массив m_pixels[]  переместить в public 
public:
   uint              m_pixels[];               // array of pixels
#include <Canvas\Canvas.mqh>
void OnStart()
  {
   CCanvas Grad;

   color col;
   if(!Grad.CreateBitmapLabel(0,0,"Grad",100,100,256,256,COLOR_FORMAT_XRGB_NOALPHA)) Print("Error creating canvas: ",GetLastError());
   for(int r=0; r<256; r++) // red
     {
      int j=0;
      // заполняем цветной градиентный квадрат
      for(int b=0; b<256; b++) // blue
         for(int g=0; g<256; g++) // green
           {
            col=(color)(((r&0x0000FF)<<16)|((g&0x0000FF)<<8)|(b&0x0000FF)); // формируем цвет RGB
            Grad.m_pixels[j]=col; // рисуем точку с текущим цветом
            j++;
           }
      Grad.Update();
      Sleep(20);  // Подождем для плавности
     }
  }
Файлы:
Gradient.mq5  2 kb
 
Nikolai Semko:
Привет, Петр!
Не вижу проблем с градиентом.
Вот простой наглядный пример скрипта, который перебирает все цвета и рисует крадиентный цветной квадрат. 
Только чтобы работал, нужно в Canvas.mqh массив m_pixels[]  переместить в public 


Привет, Николай!

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

Градиентом назвал линии рамки. Может это неправильно...

 
Реter Konow:

Привет, Николай!

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

Градиентом назвал линии рамки. Может это неправильно...


Изображение кнопки может формироваться или загрузкой уже готового bmp изображения или программным рисованием( здесь уж масса вариантов). А потом просто обрабатывая события мыши в OnChartEvent менять ее изображение.
Причина обращения: