Это оказалось проблемой из нескольких частей.
Ответ на первоначальный вопрос заключается в том, что Qt ищет библиотеки в рабочем каталоге (QDir::currentPath()
) и в ПУТИ Windows.
Часть 1:
В Windows ошибка specified module could not be found
также может означать, что одна из зависимостей mod_spatialite.dll не найдена. В моем случае я забыл переместить эти зависимости в тот же каталог, что и mod_spatialite.dll. Они включают в себя:
Часть 2:
Библиотеки libgcc_s_dw2-1.dll
и libstdc++-6.dll
, поставляемые с libspatialite, не работают с Windows 10. Подробнее об этом здесь и здесь . Они будут аварийно завершать программу при загрузке. Для меня исправлением было получить те же библиотеки из моей установки Qt на C: \ Qt \ 5.11.3 \ mingw53_32.
Использование цветовой модели RGB не является хорошим способом получить хорошее сочетание цветов. Лучше использовать другую цветовую модель для генерации вашего цвета, а затем преобразовать эту цветовую модель в RGB.
Вместо этого я предлагаю вам цветовую модель HSV или HSL , в частности, вы хотите изменить Hue .
Если вы хотите, чтобы X различало значения цвета, измените их от 0 до 360 с размером шага 360, деленным на X.
В общем, RGB не является отличным цветовым пространством для подобных вещей, потому что он воспринимается нелинейно для начинающих. Это означает, что равные расстояния, перемещаемые между RGB-триплетами, не выглядят одинаково на наших глазах.
Я бы, вероятно, работал в пространстве L * c * h * ( см. Также ) пробел, или HSL пробел, и просто генерируем равномерный интервал по оттенку. Эти пространства были разработаны так, чтобы быть приблизительно перцепционно линейными.
Какое у вас пространство выборки ... сколько элементов мы говорим.
Вы можете создать массив RGB-троек из
for(int r = 0; r < 255; r = r+16)
for(int g = 0; g < 255; g = g+16)
for(int b = 0; b < 255; b = b+16)
// take r, g, b and add it to a list
, затем рандомизировать свой список и выполнить его. это даст вам 16 ^ 3 (4096) разных цветов перед повторным.
Это очень похоже на четырехцветную проблему, связанную с раскрасочными картами, и может дать вам несколько интересных решений:
Google "delta e cie 2000"; формула цветового различия полезна для определения видимого (визуального) расстояния между двумя цветами. (На мониторе; есть другая формула для пигментов.) Он работает с цветами в пространстве Lab (реквизит для Саймона), но применяет перцепционный расчет разницы.
Мы обнаружили, что числа около 1,5 было достаточно, чтобы обеспечить визуально отличных цветов (т. Е. Вы можете определить разницу, если они находятся рядом), но если вы хотите идентифицируемых цветов (вы можете найти любой цвет в легенде), вам нужно увеличить его.
Что касается создания набора цветов ... Я бы, вероятно, начал с какого-то угла лабораторного пространства и обошел бы его, используя размер шага, который дает достаточно большие визуальные различия (примечание: он не линейный, поэтому размер шага будет вероятно, должен быть адаптивным), а затем рандомизировать список.