Привет всем! Подскажите пожалуйста, насколько приемлемо сравнивать цвета? например:
Это допустимая практика или лучше добавить int переменные и сравнивать их?
Цвета - это по сути целочисленные значения. Их можно сравнивать напрямую. Преобразование в строку - неоправданное излишество.
Цвета - это по сути целочисленные значения. Их можно сравнивать напрямую. Преобразование в строку - неоправданное излишество.
Но это допустимо и практикуется? у меня просто много таких сравнений в коде и не все четко работают, вот я и подумал что проблема в нем, но
возможно где-то иначе начудил...
Но это допустимо и практикуется? у меня просто много таких сравнений в коде и не все четко работают, вот я и подумал что проблема в нем, но
возможно где-то иначе начудил...
Настолько же, насколько допустимо сравнивать целочисленные значения.
Настолько же, насколько допустимо сравнивать целочисленные значения.
понял, спасибо!
Но это допустимо и практикуется? у меня просто много таких сравнений в коде и не все четко работают, вот я и подумал что проблема в нем, но
возможно где-то иначе начудил...
см. https://www.mql5.com/ru/docs/basis/types:
Данные типов color и datetime представляются в виде целых чисел
if(ObjectGetInteger(0,name,OBJPROP_BGCOLOR)==int(переменная color))u1++;
см. https://www.mql5.com/ru/docs/basis/types:
Данные типов color и datetime представляются в виде целых чисел
Большое спасибо, буду разбираться...
Большое спасибо, буду разбираться...
В этом случае перед сравнением нужно на всякий случай обнулить черверый старший байт следующим способом:
if (clr1&0x00FFFFFF==clr2&0x00FFFFFF) ...;
И еще нужно знать что в цвете RGB (без прозрачности COLOR_FORMAT_XRGB_NOALPHA) и ARGB (с прозрачностью COLOR_FORMAT_ARGB_NORMALIZE) синий и красный цвет меняются местами
это можно продемонстрировать следующим кодом:
color x=0x00112233; color y=ColorToARGB(x,0x44); color z=ColorToARGB(y,0); uchar a=y>>24;
при отладке имеем:
т.е. если в канвасе с прозрачностью (COLOR_FORMAT_ARGB_NORMALIZE) нарисовать любой объект с цветом:
uint clr=clrRed|0xFF000000;
то цвет объекта будет синим.
Привет всем! Подскажите пожалуйста, насколько приемлемо сравнивать цвета? например:
Это допустимая практика или лучше добавить int переменные и сравнивать их?
Если сравнивать "равно-не равно", то правильно сказали про обычное целочисленное сравнение.
Если оценивать близость одного цвета к другому, то надо брать среднее от разниц отдельных компоненов цвета R, G и B
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет всем! Подскажите пожалуйста, насколько приемлемо сравнивать цвета? например:
Это допустимая практика или лучше добавить int переменные и сравнивать их?