Russian Qt Forum

Qt => Общие вопросы => Тема начата: dr_Begemot от Май 24, 2010, 11:39



Название: Рисование линий
Отправлено: dr_Begemot от Май 24, 2010, 11:39
Есть некоторый цвет фона QColor. В программе есть возможность менять цвет фона на любой произвольный. Так же в программе можно выделять некоторую область, при этом, рисуется прямоугольник выделения. Посоветуйте, как сделать так, чтобы прямоугольник выделения всегда был хорошо виден не зависимо от цвета фона? Т.е. нужно найти такой цвет прямоугольника выделения, который бы был лучше всего виден на выбранном цвете фона. К примеру на белом фоне лучше всего рисовать черный прямоугольник, на черной области - белый.

Есть ли какие-то алгоритмы, которые позволили бы зная один QColor цвета фона, определить оптимальный QColor для прямоугольника выделения?

спасибо)


Название: Re: Рисование линий
Отправлено: alexman от Май 24, 2010, 11:53
Есть ли какие-то алгоритмы, которые позволили бы зная один QColor цвета фона, определить оптимальный QColor для прямоугольника выделения?
Для каждого пикселя можно попробовать брать отрицание текущего цвета пикселя.


Название: Re: Рисование линий
Отправлено: Makss от Май 24, 2010, 11:58
Код:
QColor color = QColor((~col.red()) & 0xFF, (~col.green()) & 0xFF, (~col.blue()) & 0xFF);

col - цвет фона
color - цвет рамки в зависимости от фона


Название: Re: Рисование линий
Отправлено: alexman от Май 24, 2010, 12:06
Код:
QColor color = QColor((~col.red()) & 0xFF, (~col.green()) & 0xFF, (~col.blue()) & 0xFF);

col - цвет фона
color - цвет рамки в зависимости от фона
(~col.red()) & 0xFF - зачем?
(~col.red()) & 0xFF == ~col.red()


Название: Re: Рисование линий
Отправлено: dr_Begemot от Май 24, 2010, 12:30
Есть ли какие-то алгоритмы, которые позволили бы зная один QColor цвета фона, определить оптимальный QColor для прямоугольника выделения?
Для каждого пикселя можно попробовать брать отрицание текущего цвета пикселя.

Ммм, это надо специальную функцию рисования писать наверное? Или что-то такое уже есть?


Название: Re: Рисование линий
Отправлено: Igors от Май 24, 2010, 15:43
Цвет "рамки для выбора" выбирается, там же где и цвет фона. Остальное не очень надежно/удобно. Напр. инверсия не решает проблемы при сером фоне (который вполне вероятен). Спихните это на пользователя.