Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2009, 14:13   #1
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию Сортировка цветов

Всем привет! Вот такая головоломка заявилась:
Короче надо отсортировать цвета. Ну вообще я в функции сравнения следующее написал:
Код:
result := color1 - color2;
Сортирует то как надо, в математическом плане. Да смотрится это для человека как-то не так!
Вон, между фиолетовыми какой про межуток из синих цветов. Надо-бы как-то так, что бы реальнее было-бы...
Altera вне форума Ответить с цитированием
Старый 26.09.2009, 14:39   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

В таком случае распределяйте их так:
0,0,0
...
16,16,16
...
32,32,32
...
256,256,256
Разбейте цвет по BGR и сравнивайте их.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 26.09.2009, 17:02   #3
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Да, но у меня ведь может R≠G≠B. Сейчас попробую нечто подобное, но не уверен
++++++++++++++++
Нет, не получается...
++++++++++++++++
Вообще как цвета должны сортироваться?
Я решил сначала добиться правильной сортировки цветов радуги.
Т.е.

Красный #FF0000 (0000FF); ████
Оранжевый #FF8000 (0080FF); ████
Жёлтый #FFFF00 (00FFFF); ████
Зелёный #00FF00 (00FF00); ████
Голубой #0080FF (FF8000); ████
Синий #0000FF (FF0000); ████
Фиолетовый #FF00FF (FF00FF); ████

Последний раз редактировалось Altera; 26.09.2009 в 18:24.
Altera вне форума Ответить с цитированием
Старый 26.09.2009, 18:15   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Ну ясное дело R≠G≠B!!!
Сначала сравниваем B (так как он идет первым в Тколор) Самый больший ставим вверх. Если есть равные по В, сравниваем их по Джи, если они равны по Джи, сравниваем их по Р
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 26.09.2009, 18:16   #5
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Ну ясное дело R≠G≠B!!!
Сначала сравниваем B (так как он идет первым в Тколор) Самый больший ставим вверх. Если есть равные по В, сравниваем их по Джи, если они равны по Джи, сравниваем их по Р
Приведи примерчик
Altera вне форума Ответить с цитированием
Старый 26.09.2009, 18:27   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Ок, у нас есть такие цвета:
0,0,0
255,255,255
0,255,255
255,255,0

Ищем самый маленький B:
0,0,0
0,255,255

У нас два цвета, сравниваем их по G
0,0,0
0,255,255

Сравнили, расположили, преступаем к следующим:

Сравниваем по B:
255,255,255
255,255,0

Их опять два, сравниваем по G
255,255,255
255,255,0

Не помогло, сравниваем по R(полседняя надежда)
255,255,0
255,255,255

Помогло, теперь выводим тот порядок, который мы получили:
0,0,0
0,255,255
255,255,0
255,255,255

Попробуйте их (цифры) оцветить, посмотрим, какой порядок получается в цветах.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 26.09.2009, 19:11   #7
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Может перевести в ч/б(с учетом восприятия цвета человеком) и отсортировать?
Levsha100 вне форума Ответить с цитированием
Старый 26.09.2009, 19:18   #8
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Может перевести в ч/б
Сначала нужно придумать алгоритм перевода, а потом как ты их будешь сортировать? по яркости и контрастности? Они же все перемешаются.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 26.09.2009, 21:38   #9
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

сегодня совершенно случайно придумал перевод в ч/б =)
bw:=round(getRvalue(pixel[x,y])+getGvalue(pixel[x,y])+getBvalue(pixel[x,y]))/3;
pixel[x,y]:=rgb(bw,bw,bw);
TwiX вне форума Ответить с цитированием
Старый 26.09.2009, 22:42   #10
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
...
Помогло, теперь выводим тот порядок, который мы получили:
0,0,0
0,255,255
255,255,0
255,255,255

Попробуйте их (цифры) оцветить, посмотрим, какой порядок получается в цветах.
А чё отцвечивать то?

Разве и так не видно, что \то тоже самое что и просто сравнивать сими числа
ведь

000000<00FFFF<FFFF00<FFFFFF

Такой-же порядок и при моей сортировке будет!
И вы наверное не въехали! У меня в процедуре сортировки вызывается функция сравнения, в которой сравниваются 2 цвета. Функция возвращает 0 если цвета идентичны, отрицательное, если первый цвет должен стоять после второго и положительное если первый должен быль перед вторым. Вот и всё. Мне надо организовать функцию сравнения.

Я бы сделал так:

Я только не знаю как. Ща попытаюсь кое-что. Как мне определить яркость и контраст из цвета?
Altera вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Затемнение и осветление цветов. proglamer Мультимедиа в Delphi 1 02.12.2008 16:09
Получение 2х цветов и их сравнение Zeraim Помощь студентам 3 26.04.2008 15:43
Сравнивание цветов Zeraim Общие вопросы Delphi 7 26.04.2008 12:49
Копирование текста ячейки 2 цветов WIC Microsoft Office Excel 3 24.09.2007 13:32
Прозрачность для нескольких цветов в Image SERG1980 Общие вопросы Delphi 3 11.05.2007 19:53