Russian Qt Forum
Май 10, 2024, 00:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Рисование линий  (Прочитано 3172 раз)
dr_Begemot
Гость
« : Май 24, 2010, 11:39 »

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

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

спасибо)
Записан
alexman
Гость
« Ответ #1 : Май 24, 2010, 11:53 »

Есть ли какие-то алгоритмы, которые позволили бы зная один QColor цвета фона, определить оптимальный QColor для прямоугольника выделения?
Для каждого пикселя можно попробовать брать отрицание текущего цвета пикселя.
Записан
Makss
Гость
« Ответ #2 : Май 24, 2010, 11:58 »

Код:
QColor color = QColor((~col.red()) & 0xFF, (~col.green()) & 0xFF, (~col.blue()) & 0xFF);

col - цвет фона
color - цвет рамки в зависимости от фона
Записан
alexman
Гость
« Ответ #3 : Май 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()
Записан
dr_Begemot
Гость
« Ответ #4 : Май 24, 2010, 12:30 »

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

Ммм, это надо специальную функцию рисования писать наверное? Или что-то такое уже есть?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Май 24, 2010, 15:43 »

Цвет "рамки для выбора" выбирается, там же где и цвет фона. Остальное не очень надежно/удобно. Напр. инверсия не решает проблемы при сером фоне (который вполне вероятен). Спихните это на пользователя.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.135 секунд. Запросов: 23.