Люди разбирающиеся в классе CCanvas скажите, а есть ли там возможность создать градиент? Например, для прямоугольника, чтобы превратить его в кнопку? Давно хотел это спросить.)
Реter Konow: Люди разбирающиеся в классе CCanvas скажите, а есть ли там возможность создать градиент? Например, для прямоугольника, чтобы превратить его в кнопку? Давно хотел это спросить.)
А есть ли примеры кнопок нарисованных с помощью канваса? Не припомню, чтобы их видел. Видел очень крутые кнопки, но они были на основе исходных картинок, а полностью нарисованных на канвасе не видел...
А есть ли примеры кнопок нарисованных с помощью канаваса? Не припомню, чтобы их видел. Видел очень крутые кнопки, но они были на основе исходных картинок, а полностью нарисованную на канвасе не видел...
У Анатолия почитайте в описании его граф. библиотеки - про информационныне элементы, если мне память не изменяет.
Нашел. В элементе подсказка используется градиент. Правда не понял можно ли задавать каждой линии градиента свой цвет и прозрачность. Надо будет проштудировать канвас на досуге. Любопытно...
Реter Konow: Люди разбирающиеся в классе CCanvas скажите, а есть ли там возможность создать градиент? Например, для прямоугольника, чтобы превратить его в кнопку? Давно хотел это спросить.)
Привет, Петр! Не вижу проблем с градиентом. Вот простой наглядный пример скрипта, который перебирает все цвета и рисует в динамике меняющийся градиентный цветной квадрат. Только, чтобы работал, нужно в Canvas.mqh массив m_pixels[] переместить в public
public:
uint m_pixels[]; // array of pixels
#include <Canvas\Canvas.mqh>
voidOnStart()
{
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++) // bluefor(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); // Подождем для плавности
}
}
Nikolai Semko: Привет, Петр! Не вижу проблем с градиентом. Вот простой наглядный пример скрипта, который перебирает все цвета и рисует крадиентный цветной квадрат. Только чтобы работал, нужно в Canvas.mqh массив m_pixels[] переместить в public
Привет, Николай!
Спасибо за пример, но я имел ввиду несколько иное. Неясно передал свою мысль. Имел ввиду рамку квадрата, которая превратит квадрат в кнопку. Для этого нужно чтобы линии рамки были разные. Например, верхняя и левая линии - светлые, а нижняя и правая - темные, - кнопка отжата, если наоборот, то кнопка будет выглядеть нажатой. Хотел узнать как это можно сделать с помощью канваса.
Градиентом назвал линии рамки. Может это неправильно...
Спасибо за пример, но я имел ввиду несколько иное. Неясно передал свою мысль. Имел ввиду рамку квадрата, которая превратит квадрат в кнопку. Для этого нужно чтобы линии рамки были разные. Например, верхняя и левая линии - светлые, а нижняя и правая - темные, - кнопка отжата, если наоборот, то кнопка будет выглядеть нажатой. Хотел узнать как это можно сделать с помощью канваса.
Градиентом назвал линии рамки. Может это неправильно...
Изображение кнопки может формироваться или загрузкой уже готового bmp изображения или программным рисованием( здесь уж масса вариантов). А потом просто обрабатывая события мыши в OnChartEvent менять ее изображение.
Сравнил эти формулы, действительно разный результат. За одно сравнил скорости.
Левая половина сделана из трех слоев разного цвета, везде прозрачность 128. Цвета смешивает терминал.
Правая верхняя сделана в одном слое, смешивалось по английской вики.
Правая нижняя в одном слое, по русской вики.
Сравнение терминала и английской вики по скрину (терминал сверху)
Сравнение формул по ресурсам сохраненным в файл (английская сверху)
Много времени занимает создание ресурса, в сравнении с расчетом цвета и заполнением массива до 10 раз, наверно и нет смысла разбираться с OCL.
ПС Вроде неплохо, можно фотошоп в МТ забабахать :)
Люди разбирающиеся в классе CCanvas скажите, а есть ли там возможность создать градиент? Например, для прямоугольника, чтобы превратить его в кнопку? Давно хотел это спросить.)
Есть.
А есть ли примеры кнопок нарисованных с помощью канваса? Не припомню, чтобы их видел. Видел очень крутые кнопки, но они были на основе исходных картинок, а полностью нарисованных на канвасе не видел...
А есть ли примеры кнопок нарисованных с помощью канаваса? Не припомню, чтобы их видел. Видел очень крутые кнопки, но они были на основе исходных картинок, а полностью нарисованную на канвасе не видел...
У Анатолия почитайте в описании его граф. библиотеки - про информационныне элементы, если мне память не изменяет.
Попробую найти...
Люди разбирающиеся в классе CCanvas скажите, а есть ли там возможность создать градиент? Например, для прямоугольника, чтобы превратить его в кнопку? Давно хотел это спросить.)
Не вижу проблем с градиентом.
Вот простой наглядный пример скрипта, который перебирает все цвета и рисует в динамике меняющийся градиентный цветной квадрат.
Только, чтобы работал, нужно в Canvas.mqh массив m_pixels[] переместить в public
Привет, Петр!
Не вижу проблем с градиентом.
Вот простой наглядный пример скрипта, который перебирает все цвета и рисует крадиентный цветной квадрат.
Только чтобы работал, нужно в Canvas.mqh массив m_pixels[] переместить в public
Привет, Николай!
Спасибо за пример, но я имел ввиду несколько иное. Неясно передал свою мысль. Имел ввиду рамку квадрата, которая превратит квадрат в кнопку. Для этого нужно чтобы линии рамки были разные. Например, верхняя и левая линии - светлые, а нижняя и правая - темные, - кнопка отжата, если наоборот, то кнопка будет выглядеть нажатой. Хотел узнать как это можно сделать с помощью канваса.
Градиентом назвал линии рамки. Может это неправильно...
Привет, Николай!
Спасибо за пример, но я имел ввиду несколько иное. Неясно передал свою мысль. Имел ввиду рамку квадрата, которая превратит квадрат в кнопку. Для этого нужно чтобы линии рамки были разные. Например, верхняя и левая линии - светлые, а нижняя и правая - темные, - кнопка отжата, если наоборот, то кнопка будет выглядеть нажатой. Хотел узнать как это можно сделать с помощью канваса.
Градиентом назвал линии рамки. Может это неправильно...
Изображение кнопки может формироваться или загрузкой уже готового bmp изображения или программным рисованием( здесь уж масса вариантов). А потом просто обрабатывая события мыши в OnChartEvent менять ее изображение.