прямоугольник, треугольник, эллипс. заливка цветом при наложении объектов друг на друга. - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вы вначале реализуйте прототип, рабочий и функциональный и быстрый, который вас устраивает
Вот его выкидывайте на обсуждение, и если он реально будет удобным, будет что обсуждать в СД.
Или используйте канвас и рисуйте что хотите и как хотите.
1 вот честно не совсем понимаю какой я могу сделать прототип( идея простая и заключается в следующем, сделать возможность, в графических фигурах вместо картинок использовать подложку в виде BMP файла, что бы он растягивался автоматически на всю площадь фигуры,
(по принципу как он устанавливается в объекте Bitmap)
2 скажите пожалуйста, в начале этой ветки есть картинка , если я буду рисовать фигуры в Canvas при наложении друг на друга я получу желаемый результат? мне нужно в тех местах. где вопросы на картинке. выше в этой ветке. иметь красный цвет (такой же как цвет фигур)
если да. то я без проблем. это будет делать через Canvas
1 вот честно не совсем понимаю какой я могу сделать прототип( идея простая и заключается в следующем, сделать возможность, в графических фигурах вместо картинок использовать подложку в виде BMP файла, что бы он растягивался автоматически на всю площадь фигуры,
(по принципу как он устанавливается в объекте Bitmap)
2 скажите пожалуйста, в начале этой ветки есть картинка , если я буду рисовать фигуры в Canvas при наложении друг на друга я получу желаемый результат? мне нужно в тех местах. где вопросы на картинке. выше в этой ветке. иметь красный цвет (такой же как цвет фигур)
если да. то я без проблем. это будет делать через Canvas
большое спасибо) скажите пожалуйста,
изменение масштаба, размер фигур и точки их привязок не связаны?
потому как фагуры только по пикселям строятся?
(стандартные фигуры строятся по координатам цены и времени)
c помощью BitmapLab можно и без Canvas нарисовать просто фигуры привязаны к графику а эти к монитору(ещё раз спасибо, вечером попробую покрутить canvas вдруг чё и выйдет
большое спасибо) скажите пожалуйста,
изменение масштаба, размер фигур и точки их привязок не связаны?
потому как фагуры только по пикселям строятся?
(стандартные фигуры строятся по координатам цены и времени)
c помощью BitmapLab можно и без Canvas нарисовать просто фигуры привязаны к графику а эти к монитору(ещё раз спасибо, вечером попробую покрутить canvas вдруг чё и выйдет
Можно привязывать к пикселям экрана, а можно и ко времени. Для этого существуют различные способы привязки объектов. В классе CCanvas это Create, CreateBitmap, CreateBitmapLabel.
Изучайте первоисточники и экспериментируйте. А то будет как в известном мультике:))
Можно привязывать к пикселям экрана, а можно и ко времени. Для этого существуют различные способы привязки объектов. В классе CCanvas это Create, CreateBitmap, CreateBitmapLabel.
Изучайте первоисточники и экспериментируйте. А то будет как в известном мультике:))
а Bitmap буде потом автоматически изменять размер при изменении масштаба графика?
там ведь привязка цена и время а две другие точки всё равно это пиксели..
или нужно будет отдельно под каждый масштаб делать размер фигуры?
сделать и съесть я могу сам.. мне бы понять будет оно работать как мне нужно или нет) (есть ли такая техническая возможность)
а Bitmap буде потом автоматически изменять размер при изменении масштаба графика?
там ведь привязка цена и время а две другие точки всё равно это пиксели..
или нужно будет отдельно под каждый масштаб делать размер фигуры?
Нет, при использовании CreateBitmap для привязки к графику, привязываться будет только начало (левый верхний угол) канваса, и при масштабировании размер канваса меняться не будет в текущей реализации класса CCanvas. Но вам никто не мешает считывать изменение масштаба графика через событие CHARTEVENT_CHART_CHANGE и реализовать синхронное изменение маcштаба самого канваса или масштаба объектов внутри него. Класс CCanvas не догма, а лишь пример реализации пользовательской графики, причем далеко не самый лучший, и вы можете создать свой аналогичный класс, свою систему масштабируемых координат и т.д. Павел, вы же опытный программист судя по количеству ваших продуктов. К чему тогда эти странные вопросы? Изучите класс CCanvas в файле: "..\MQL5\Include\Canvas\Canvas.mqh" и станет всё ясно. Лично я использую из этого класса только создание самого канваса и массив его точек m_pixels[], который имеет размерность m_width*m_height, формируя свои собственные функции.
Нет, при использовании CreateBitmap для привязки к графику, привязываться будет только начало (левый верхний угол) канваса, и при масштабировании размер канваса меняться не будет в текущей реализации класса CCanvas. Но вам никто не мешает считывать изменение масштаба графика через событие CHARTEVENT_CHART_CHANGE и реализовать синхронное изменение маcштаба самого канваса или масштаба объектов внутри него. Класс CCanvas не догма, а лишь пример реализации пользовательской графики, причем далеко не самый лучший, и вы можете создать свой аналогичный класс, свою систему масштабируемых координат и т.д. Павел, вы же опытный программист судя по количеству ваших продуктов. К чему тогда эти странные вопросы? Изучите класс CCanvas в файле: "..\MQL5\Include\Canvas\Canvas.mqh" и станет всё ясно. Лично я использую из этого класса только создание самого канваса и массив его точек m_pixels[], который имеет размерность m_width*m_height, формируя свои собственные функции.
спасибо за ответ, думал не ответите)
изменение масштаба меня не пугает, я делал тестер ручной торговли, там это вынужденная мера,
а вот когда у меня 1000 фигур, все разной высоты и ширины; перестраивать их по масштабу( мне кажется не приемлемым с точки зрения ресурсозатратности тем более что это индикатор(((
вопросы к тому, что я не смогу с помощью канваса решить свой вопрос а мне все советуют этот канвас.
по сути, что ООП, что просто функции, они все делают одно и то же..
мне нужно либо, что бы объект прямоугольник заполнялся bmp файлом, либо BitMap ширину и высоту высчитывал не на основе пикселей а на основе цены и времени то есть правый край тоже должен быть привязан к цене и времени изначально без перестройки по масштабу..
я вот давно заметил язык MQL простой но вот пути решений для достижения определённых результатов иногда слишком длинные
попробую при свободном времени перестраивать размер фигур построенные в канвасе как Bitmap за масштабом , но думаю придётся отказаться от идем залитых фигур. и пользоваться фигурами 14 летней давности)
и если рисовать Bitmapы и менять их под масштаб то и canvas не нужен(
мне нужно либо, что бы объект прямоугольник заполнялся bmp файлом, либо BitMap ширину и высоту высчитывал не на основе пикселей а на основе цены и времени то есть правый край тоже должен быть привязан к цене и времени изначально без перестройки по масштабу..
Так ведь другого варианта не существует, как только через создание канвасa посредством CreateBitmap. Или мы просто путаемся в определениях. Канвас это и есть BitMap! Просто в классе CCanvas и создаётся этот BitMap, и с объектом класса удобнее работать.
ага, только сейчас обратил внимание) что графические фигуры в другом классе а здесь только Bitmap. в любом случае под мои потребности и в контексте этой задачи ни то не другое не подходит( а жаль
с ООП дружу , но использую его исключительно в очень больших размерах кода, там где без него нельзя.. в мелких масштабах неООП как то логику алгоритмов удобнее думать .. может правда это просто привычка)
жаль что сообщение пропало , наверно что-то толковое было.. (у меня есть золотое правило, прежде чем нажать : отправить, обновить; нужно нажать ctrl+a и ctrl+c)
ага, только сейчас обратил внимание) что графические фигуры в другом классе а здесь только Bitmap. в любом случае под мои потребности и в контексте этой задачи ни то не другое не подходит( а жаль
с ООП дружу , но использую его исключительно в очень больших размерах кода, там где без него нельзя.. в мелких масштабах неООП как то логику алгоритмов удобнее думать .. может правда это просто привычка)
жаль что сообщение пропало , наверно что-то толковое было.. (у меня есть золотое правило, прежде чем нажать : отправить, обновить; нужно нажать ctrl+a и ctrl+c)
Из ваших слов, Павел, я пока могу сделать только один вывод. Вы не понимаете, что такое BitMap и суть класса CCanvas. Canvas в переводе с английского - холст. Т.е. вы формируете в пределах своего окна холст, на котором можете нарисовать что угодно, и при этом можете даже выключить сам график, или этот график рисовать уже в канвасе. У вас есть доступ к любой точке, вы можете формировать любые фигуры с любой заливкой, в том числе градиентной. Даже, если задаться целью, вы можете с помощью канваса создать видео плеер в МТ, графический редактор сложности фотошопа, 3D игру, да хоть виртуальную ОС написать. А вы говорите - не подходит. Нет такой графической задачи, которой нельзя было бы решить в канвасе. Другое дело скорость. Но, я думаю, вы также недооцениваете скорость канваса. Тем более если у вас 1000 объектов, - только канвас, т.к. канвас это один объект, на котором можно нарисовать сколько угодно фигур, а не так как при использовании обычных встроенных в МТ5 фигур, которые представляет каждая из себя объект. А если бы оценивали быстродействие рисования, то поняли бы что формирование объекта достаточно ресурсоёмкое дело. Прикреплю один пример - скрипт в виде исполняемого файла на МТ5 и можете оценить скорость карваса. В примере рисуются сглаженные закрашенные круги в случайном порядке и случайного цвета и плавно меняют свой размер. Попробуйте при запуске этого скрипта, поставьте задержку между кадрами 0 миллисекунд и количество окружностей 1000. Вы даже задержки не увидите. Я увидел задержку между кадрами где то в 0.2-0.3 секунды при количестве окружностей 10 000. Т.е. в каждом кадре прорисовываются все 10000 окружностей с радиусами от 20 до 200 (по умолчанию) и накладываются друг на друга, причем формирование окружности и ее закрашивание происходит попиксельно.